Javascript 减少空数组的数组数
我试图在数组上的数组上运行reduce函数。数组中的数组可以为空。因此: []、[]、[]、[]、[]。reduce((x,y)=>x.length+y.length)不起作用 [[2,3],[2,3],[3,5],[5,6]。reduce((x,y)=>x.length+y.length)似乎也不起作用Javascript 减少空数组的数组数,javascript,ecmascript-6,Javascript,Ecmascript 6,我试图在数组上的数组上运行reduce函数。数组中的数组可以为空。因此: []、[]、[]、[]、[]。reduce((x,y)=>x.length+y.length)不起作用 [[2,3],[2,3],[3,5],[5,6]。reduce((x,y)=>x.length+y.length)似乎也不起作用 我遗漏了什么吗?您可以为其获取起始值 var getLength=(r,x)=>r+x.length, length0=[]、[]、[]、[]、[]减少(getLength,0), //
我遗漏了什么吗?您可以为其获取起始值
var getLength=(r,x)=>r+x.length,
length0=[]、[]、[]、[]、[]减少(getLength,0),
// ^
length1=[[2,3],[2,3],[3,5],[5,6]。减少(getLength,0);
// ^
控制台日志(长度0);
控制台日志(长度1)代码>您可以获取的起始值
var getLength=(r,x)=>r+x.length,
length0=[]、[]、[]、[]、[]减少(getLength,0),
// ^
length1=[[2,3],[2,3],[3,5],[5,6]。减少(getLength,0);
// ^
控制台日志(长度0);
控制台日志(长度1)代码>请小心,因为x.length和y.length最终会变成整数,而整数没有length属性
你可以这样做
(x, y) => x.length || x + y.length || y
因此,如果存在x.length,则会使用它,否则只需使用x的值,因为x.length和y.length最终会变成整数,而整数没有长度属性
你可以这样做
(x, y) => x.length || x + y.length || y
因此,如果存在x.length,则使用它,否则只需使用x的值传递函数的签名作为的第一个参数。reduce
是
(accumulator, currentValue, currentIndex, array) => {...}
可以传递给reduce
的第二个参数是累加器的起始值
在您的情况下,(x,y)=>x.length+y.length
试图获取名为x
的累加器的长度
,该累加器将未定义
,并将其添加到父数组中第一个数组的长度
当您尝试将未定义的
添加到一个数字时,会得到NaN
我猜您是在计算父数组中所有数组的聚合长度?如果是这样,试试这个
[[],[],[],[]].reduce((acc, array) => acc + array.length, 0)
// returns 0
[[2, 3], [2, 3], [3, 5], [5, 6]].reduce((acc, array) => acc + array.length, 0)
// returns 8
作为.reduce
的第一个参数传递的函数的签名是
(accumulator, currentValue, currentIndex, array) => {...}
可以传递给reduce
的第二个参数是累加器的起始值
在您的情况下,(x,y)=>x.length+y.length
试图获取名为x
的累加器的长度
,该累加器将未定义
,并将其添加到父数组中第一个数组的长度
当您尝试将未定义的
添加到一个数字时,会得到NaN
我猜您是在计算父数组中所有数组的聚合长度?如果是这样,试试这个
[[],[],[],[]].reduce((acc, array) => acc + array.length, 0)
// returns 0
[[2, 3], [2, 3], [3, 5], [5, 6]].reduce((acc, array) => acc + array.length, 0)
// returns 8
[]、[]、[]、[]、[]、[]].reduce((x,y)=>x.length+y.length)
不起作用,因为您返回的是整数值而不是数组。因此,在第二次迭代中,它将失败,因为number没有。length
请添加该操作的潜在结果。[[]、[]、[]、[]、[]、[]、[]。reduce((x,y)=>x.length+y.length)
不起作用,因为您返回的是整数值,而不是数组。因此,在第二次迭代中,它将失败,因为number没有。length
请添加操作的潜在结果。这是正确答案,看起来您错过了reduce的回调结构。作为将来的参考,.reduce
的MDN页面是ohhhh。那么,在本例中,“array”是当前迭代的元素吗?是的,完全正确reduce
有点奇怪,因为回调的第一个参数是累加器。这是正确的答案,看起来你错过了reduce的回调结构。作为将来的参考,.reduce
的MDN页面是ohhhh。那么,在本例中,“array”是当前迭代的元素吗?是的,完全正确reduce
有点奇怪,因为回调的第一个参数是累加器。