将一组对象存储在一个数组中。如果我想比较一个像重量这样的属性,我该如何以最有效的方式做到这一点?让我们说我希望当体重= 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 :(得分:2)
您需要在某个地方保持fruitBasket数组中的权重总和,在添加之前,您应该根据项目的附加权重进行检查。无需过多担心通过阵列访问添加项目的个别重量 - >对象,而是让你的函数处理它。
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 :(得分:1)
对于您给出的具体示例,我将使用Array.reduce方法,如下所示:
var weight =fruitBasket.reduce(function(a,b){return a.weight + b.weight})
哪个会给你整体的重量。 减少信息(https://www.w3schools.com/jsref/jsref_reduce.asp)
然而,答案可能取决于你的意思是有效的(即有效,最佳表现,最具可读性等)