如何.filter和.reduce javascript数组对象

时间:2018-02-18 16:25:43

标签: javascript arrays methods web-deployment

WebDev学生。我在使用.filter + .reduce数组方法和链接返回两个项目的总成本时遇到问题。关于这个主题的Codeburst.io非常有帮助,但我需要指导如何应用这个特定的练习,因为我的目标是一个属性:数组中的值。

这是减少代码量的练习。因此,我不需要使用for循环来遍历数组,而是需要将一个方法应用于.filter和.reduce以返回数组中每个项目的总成本。 .price

  

使用shopCart变量,创建一个采用shopCart变量的函数,并将这两个项的总成本作为total变量返回。在“// code below”之后添加代码。

var shopCart = [
  {
    id: 0,
    name: 'Womens Shirt',
    price: 30,
    size: 'Small'
  },
  {
    id: 1,
    name: 'childs shirt',
    price: 12,
    size: 'Large'
  }
]

function getCost(items){
  let total = 0;
  // code below

  // code above
 return total;
}

getCost(shopCart) < --- Add

let cost = getCost(shopCart); < ---OMIT

console.log(cost); < -- OMIT

重新审核 - 代码已经修改。

4 个答案:

答案 0 :(得分:3)

这是一种更明确的方法。

update

答案 1 :(得分:0)

您可以使用迭代执行此操作 - 例如,for循环。在getCost函数中,我们有一个初始值为零的总变量。然后,对于items数组中的每个元素,价格用于累计总数。但是,使用reduce method可以同样使用此功能。

var shopCart = [
  { id: 0, name: 'Womens Shirt', price: 30, size: 'Small' },
  { id: 1, name: 'childs shirt', price: 12, size: 'Large' }
];

function getCost(items) {
  var total = 0;
  items.forEach(e => total += e.price);
  return total;
}

let cost = getCost(shopCart); // 42
let costWithReduce = shopCart.reduce((a, c) => a + c.price, 0); // 42

console.log(cost, costWithReduce);

答案 2 :(得分:0)

您可以使用array#reduce。在total累加器中,您可以添加每个对象的price

var shopCart = [{id: 0,name: 'Womens Shirt',price: 30,size: 'Small'},{id: 1,name: 'childs shirt',price: 12,size: 'Large'}];

function getCost(items){
 return items.reduce(function(total, obj){
  return total + obj.price;
 }, 0);
}

let cost = getCost(shopCart);
console.log(cost);

var shopCart = [{id: 0,name: 'Womens Shirt',price: 30,size: 'Small'},{id: 1,name: 'childs shirt',price: 12,size: 'Large'}];

function getCost(items){
 return items.reduce((total, {price}) => total + price, 0);
}

let cost = getCost(shopCart);
console.log(cost);

答案 3 :(得分:0)

回答与其他人相同,但在所需参数范围内。

&#13;
&#13;
var shopCart = [
  {
    id: 0,
    name: 'Womens Shirt',
    price: 30,
    size: 'Small'
  },
  {
    id: 1,
    name: 'childs shirt',
    price: 12,
    size: 'Large'
  }
]

function getCost(items){
  let total = 0;
  // code below
  total = items.reduce((sum, item) => sum + item.price, total);
  // code above
 return total;
}

let cost = getCost(shopCart);

console.log(cost);
&#13;
&#13;
&#13;