如何使用此数组乘以嵌套echo
数组的长度:
values
我的代码:
const options = [
{
name: "Colors",
values: [{
label: "Blue"
},
{
label: "Red"
}]
},
{
name: "Sizes",
values: [{
label: "Small"
},
{
label: "Large"
}]
}
]
我尝试使用reduce,但是总是返回0。它应该返回ex。 const options = [
{
name: "Colors",
values: [
{
label: "Blue"
},
{
label: "Red"
}
]
},
{
name: "Sizes",
values: [
{
label: "Small"
},
{
label: "Large"
}
]
}
];
const multiply = options.reduce((a, b) => a * b.values.length, 0);
console.log(multiply);
游乐场:https://codesandbox.io/s/08jrnr72w
编辑:感谢大家的回答,我错过了最初的职位...
答案 0 :(得分:3)
reduce函数需要一个初始值。您提供的初始值为0。如果将0乘以任何值,您将得到0。
您应该使用1初始化累加器。应该对其进行修复。
但是您可能需要做更多的事情,即处理边缘条件。例如,在某一点上,一个特定对象的长度可能为0,在这种情况下,累加器的计算结果为0。
答案 1 :(得分:2)
您需要使用1初始化Array.prototype.reduce
以便进行乘法运算(乘以零总是以零结尾):
const multiply = options.reduce((a, b) => a * b.values.length, 1);
答案 2 :(得分:1)
将它们映射为一定长度,然后减少结果。
const options = [
{
name: "Colors",
values: [{
label: "Blue"
},
{
label: "Red"
}]
},
{
name: "Sizes",
values: [{
label: "Small"
},
{
label: "Large"
}]
}
]
const multValues = options.map(opt => opt.values.length).reduce((a,b) => a*b);
console.log(multValues)
答案 3 :(得分:1)
将1
乘以0
来将起始值更改为0
(因此累加器(a
)始终为0
):>
const options=[{name:"Colors",values:[{label:"Blue"},{label:"Red"}]},{name:"Sizes",values:[{label:"Small"},{label:"Large"}]}];
// change starting value -------------------------------------\/
const multiply = options.reduce((a, b) => a * b.values.length, 1);
console.log(multiply);