请问如何统计一个多维数组的元素个数,要求统计的是[1,3] [2,4]
这样的值
count([[[1,3],[2,4]],[[8,7],[9,6]]]) = 4
请问如何统计一个多维数组的元素个数,要求统计的是[1,3] [2,4]
这样的值
count([[[1,3],[2,4]],[[8,7],[9,6]]]) = 4
数叶子元素, 到叶子元素时判断一下, 像这样:
function countSpecificLeafNodes(arr) {
let count = 0;
for (let i = 0; i < arr.length; i++) {
// 是数组的话
if (Array.isArray(arr[i])) {
// 看看两子元素是不是数字
if (
arr[i].length == 2 &&
typeof arr[i][0] === "number" &&
typeof arr[i][1] === "number"
) {
count++;
} else {
// 不是就继续数
count += countSpecificLeafNodes(arr[i]);
}
}
}
return count;
}
如下图:
/* 计算所传参数包含多少个一维数组 */
function count(arr) {
if (Array.isArray(arr)) {
if (!arr.some(Array.isArray)) return 1;
return arr.reduce((r, n) => r + count(n), 0);
}
return 0;
}
console.dir(count([[1, 3, 2, 4], [8, 7, 9, 6]]));
console.dir(count([[1, 3], [2, 4], [8, 7], [9, 6]]));
console.dir(count([[[1, 3], [2, 4]], [[8, 7], [9, 6]]]));
console.dir(count([[[1, 3], [2], [4]], [[[8, 7]], [9, 6]]]));
这个问题涉及到展开层次。
如果展开一层,得到的是
如果展开两层,得到的是
看你的要结果并不是完全展开,所以
count
按理说会有一个层次参数。