2017-06-13 11 views
0

より効率的な方法でこのコードを達成する方法はありますか?ちょうど1つの得点プロパティを見つけるために、非常に大きなスコアアレイ上でループすることは非常に高価であるため、オブジェクトの配列のプロパティをループする最も効率的な方法は何ですか?

var scores = [{scoredBy:"youssef",score:5},{scoredBy:"omar",score:3}]; 

scores.forEach(score=>{ 
    if(score.scoredBy == "youssef"){ 
     console.log(score); 
    } 
}) 
+2

たぶん、あなたは試合に破ることができるループ構造を使用します。 – Teemu

+0

@ Teemu条件文にreturnステートメントを追加すると、 – Sebastianb

+1

@SebastianbはforEachと一緒にはなりません.... – epascarello

答えて

2

最も効率的な方法ではなく、キーがscoredBy値である配列のオブジェクトを使用することです。ルーピングなし、ルックアップのみ。

var scores = { "youssef" : 5, "omar":3 }; 
 
console.log(scores["youssef"])

他の方法

var scores = [{scoredBy:"youssef",score:5},{scoredBy:"omar",score:3}]; 
 

 
for (const value of scores) { 
 
    if (value.scoredBy==="youssef") { 
 
    console.log(value.score); 
 
    break; 
 
    } 
 
}

var scores = [{scoredBy:"youssef",score:5},{scoredBy:"omar",score:3}]; 
 

 
var result = scores.find(value => value.scoredBy==="youssef") 
 
console.log(result.score);

関連する問題