2016-09-01 7 views
2
マイ関数は、以下の「目的の配列」パラメータを介して渡されたソート playerPointsを含むオブジェクトを返す

配列をソートするためのより効率的/パフォーマンス方法。渡された配列を変更することなく、要素を追加し、配列を昇順でソートする方が効率的/実行可能な方法がありますか?要素を追加し、

注:オブジェクトの配列が1つまたは複数のオブジェクトを含むことができます。効率の点では、私は完了時間(スピード)を参照しています。また、関数ascendingSortは必須であり、置換することはできません。

var data = [{playerPoints: 10}, {playerPoints: 8}, {playerPoints: 2}, {playerPoints: 21},{playerPoints: 30}]; 
 

 
function ascendingSort(players) { 
 
\t var points = []; 
 
\t for(var i = 0; i < players.length; i++) { 
 
\t \t points.push(players[i].playerPoints); 
 
\t } 
 
\t points.sort(function(a, b) {return a - b;}); 
 
\t return {sortedPoints: points}; 
 
} 
 

 
var obj = ascendingSort(data); 
 
console.log(obj);

答えて

6

この機能を簡素化するために、あなたはplayerPointsプロパティにオブジェクトをマッピングするためにthe map() methodを使用することができます。また、sort()メソッド(function(a, b) {return a - b;})に渡される通常の関数をarrow function(a, b) => a - b)に変更することもできます。パフォーマンスに関しては

const data = [{playerPoints: 10}, {playerPoints: 8}, {playerPoints: 2}, {playerPoints: 21},{playerPoints: 30}] 
 

 
function ascendingSort(players) { 
 
    return { 
 
    sortedPoints: data.map(x => x.playerPoints).sort((a, b) => a - b) 
 
    } 
 
} 
 

 
const obj = ascendingSort(data) 
 
console.log(obj)

、私はあなたがすでに持っているものよりも速く解決策があると疑います。

+0

と機能を置き換えることができますが、それは、より効率的でしょうか?問題は単に異なるアプローチを求めているだけではありません。ベンチマークは何を示していますか? – Quentin

+0

お使いのラムダ式に似ています。しばしば 'map'メソッドを参照してください。しかし、実装を見ることは決してありません: –

+0

" sort()メソッド(関数(a、b){return a - b;})に渡される通常の関数を矢印の機能 " - 再び、彼らはすることができますが、なぜ彼らはする必要がありますか?矢印関数を使う主な理由は、関数で使われていない 'this'の値に影響するからです。 – Quentin

0

あなただけの彼らはできる

function ascendingSort(players) { 
     points.sort(function(a, b){return a["playerPoints"] - b["playerPoints"]}); 
     return {sortedPoints: players}; 
} 
関連する問題