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
重新审核 - 代码已经修改。
答案 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)
回答与其他人相同,但在所需参数范围内。
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;