2017-10-16 169 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'與功能,增加了'重量'屬性。 – Barmar

回答

1

你會需要在一些地方維持水果籃陣列中的權重的總和,並添加之前,你應該檢查它反對的增加的重量一個物品。不需要擔心通過訪問數組 - >對象來添加項目的個體重量,而是讓您的函數處理它。

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 
    } 
    } 
} 
1

你給我會用Array.reduce方法如下具體的例子:

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

這將使你的整體重量。 減少信息(https://www.w3schools.com/jsref/jsref_reduce.asp

然而,答案可能取決於你的意思是有效(即高效率,最佳性能,最可讀的等)