比较数组中的对象属性

时间:2017-10-16 19:02:17

标签: javascript arrays object

将一组对象存储在一个数组中。如果我想比较一个像重量这样的属性,我该如何以最有效的方式做到这一点?让我们说我希望当体重= 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...

2 个答案:

答案 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

然而,答案可能取决于你的意思是有效的(即有效,最佳表现,最具可读性等)