Javascript 将嵌套数组长度相乘并返回单个值

Javascript 将嵌套数组长度相乘并返回单个值,javascript,arrays,Javascript,Arrays,如何使用此数组将嵌套值的长度相乘: const options = [ { name: "Colors", values: [{ label: "Blue" }, { label: "Red" }] }, { name: "Sizes", values: [{ label: "Small" }, { label: "Large" }] } ] 我的代

如何使用此数组将嵌套
值的长度相乘:

const options = [
  {
    name: "Colors",
    values: [{
      label: "Blue"
    },
    {
      label: "Red"
    }]
  },
  {
    name: "Sizes",
    values: [{
      label: "Small"
    },
    {
      label: "Large"
    }]
  }
]

我的代码:

const选项=[
{
名称:“颜色”,
价值观:[
{
标签:“蓝色”
},
{
标签:“红色”
}
]
},
{
名称:“尺寸”,
价值观:[
{
标签:“小”
},
{
标签:“大”
}
]
}
];
const multiply=options.reduce((a,b)=>a*b.values.length,0);

控制台日志(乘法)将它们映射到长度,然后减少结果

const选项=[
{
名称:“颜色”,
价值观:[{
标签:“蓝色”
},
{
标签:“红色”
}]
},
{
名称:“尺寸”,
价值观:[{
标签:“小”
},
{
标签:“大”
}]
}
]
constmultValues=options.map(opt=>opt.values.length).reduce((a,b)=>a*b);

console.log(多值)
将起始值更改为
1
,因为
0
乘以任何值都是
0
(因此,累加器(
a
)将始终是
0
):

const options=[{name:“Colors”,值:[{label:“Blue”},{label:“Red”},{name:“size”,值:[{label:“Small”},{label:“Large”}]}];
//更改起始值-------------------------------------\/
const multiply=options.reduce((a,b)=>a*b.values.length,1);

控制台日志(乘法)reduce函数需要一个初始值。您提供的初始值为0。如果你用任何东西乘以0,你会得到0

您应该用1初始化累加器。这应该可以解决问题


但您可能需要做更多的工作,即处理边缘条件。例如,在某一点上,一个特定对象的长度可能为0,在这种情况下,累加器的计算结果将为0。

您需要初始化
数组。prototype。将
减少为1以进行乘法(乘以0最终将始终为零):


与初始值0相乘。任何数字乘以0将返回0。只需将
0
替换为
1
这是正确的答案,因为它还注意到数组中可能存在长度为
0
的元素。此外,您还可以处理没有
属性的元素。感谢您指出,在我的情况下,值总是有值,@jayendra sharan您介意发布一个边缘条件吗?这将是伟大的参考。我已经创造了一个叉子,你可以玩它,让我知道如果有什么不工作。如果解决了您的问题,请将其标记为已接受。
const multiply = options.reduce((a, b) => a * b.values.length, 1);