减少数组的数组

时间:2018-08-02 21:59:01

标签: javascript arrays

我试图弄清楚如何将[[1,2,3],[1,2],[]]之类的东西减少到数组项的总和。我想接收嵌套数组中元素的总数,因此,此问题的答案将为5。我不在乎这些数组中的内容,而只是它们的长度。

非常感谢您的支持!

2 个答案:

答案 0 :(得分:5)

您可以使用reduce作为一种可能的解决方案。

let data = [[1,2,3],[1,2],[]];

const total = data.reduce((acc, entry) => acc += entry.length ,0);

console.log('total ' , total);

答案 1 :(得分:1)

Tareq的解决方案适合给出的示例。

但是,如果您有一个具有更深层嵌套的数组,并且其中可能有空的子数组,那么以下内容将有所帮助:

var a=[[],[1,2,3],[1,2],[],[[4,[5,,,6]]],[]];
console.log(a.toString().replace(/^,|,+(?=,|$)/g,'').split(',').length);

这可能有点愚蠢,但是现在表达式将忽略任何空元素,无论它们出现在何处。正则表达式在字符串的开头检查单个逗号,在字符串的中间检查多个逗号,并在字符串的末尾检查单个逗号,并相应地将其删除。