2017-10-16 14 views
1

アレイにオブジェクトのセットを格納します。私が重みのような属性を比較したいのであれば、私はそれをどのようにして最も効果的な方法でやりますか?重量= 10アレイ内のオブジェクトプロパティの比較

var fruitBasket = [] 
function addFruit(fruit, weight) { 
return { 
    fruit: fruit, 
    weight: weight 
} 
} 
fruitBasket.push(addFruit(apple, 2)); 
fruitBasket.push(addFruit(orange, 3)); 
fruitBasket.push(addFruit(watermelon, 5)); 
//etc... 
+0

使用 'Array.prototype.reduce'として有効(など、最も読みやすいすなわち効率的な、最高のパフォーマンスを)何を意味するかに依存する場合があります答えは、それが追加されます'weight'プロパティです。 – Barmar

答えて

1

あなたはどこかfruitBasket配列内の重みの合計を維持する必要があるだろう、とあなたが追加する前にの追加重量に対してそれを確認する必要がある場合のiはfruitbasketがいっぱいになりたいとしましょうアイテム。追加されたアイテムの個別の重みについて、配列 - >オブジェクトを介してアクセスすることであまり心配する必要はなく、関数がそれを処理できるようにします。

var weight =fruitBasket.reduce(function(a,b){return a.weight + b.weight}) 

あなたの全体の重量を与える:あなたは、私は以下のようにArray.reduceメソッドを使用した具体的な例

var totalWeight = 0, 
    maxWeight = 10; 

function addFruit(fruit, weight) { 
    // Adds items to the fruit basket iff weight does not exceed maxWeight 
    if((totalWeight + weight) <= maxWeight) { 
    totalWeight += weight; 
    return { 
     fruit: fruit, 
     weight: weight 
    } 
    } 
} 
関連する問題