数组的 .length 属性将返回数组中元素的数量。例如,下面的数组包含 2 个元素:
[1, [2, 3]] // 2 个元素,数字 1 和数组 [2, 3]。 假设我们想知道嵌套数组中非嵌套项的总数。在上面的情况下,[1,[2,3]] 包含 3 个非嵌套项,即 1、2 和 3。
示例
getLength([1, [2, 3]]) ➞ 3
getLength([1, [2, [3, 4]]]) ➞ 4
getLength([1, [2, [3, [4, [5, 6]]]]]) ➞ 6
数组的 .length 属性将返回数组中元素的数量。例如,下面的数组包含 2 个元素:
[1, [2, 3]] // 2 个元素,数字 1 和数组 [2, 3]。 假设我们想知道嵌套数组中非嵌套项的总数。在上面的情况下,[1,[2,3]] 包含 3 个非嵌套项,即 1、2 和 3。
示例
getLength([1, [2, 3]]) ➞ 3
getLength([1, [2, [3, 4]]]) ➞ 4
getLength([1, [2, [3, [4, [5, 6]]]]]) ➞ 6
.flat(Infinity)
来展开数组,然后获取其长度。使用具有Infinity
参数的.flat()
将嵌套数组中的所有元素连接到外部数组中,从而允许您计算元素的数量:
const getLength = arr => arr.flat(Infinity).length;
console.log(getLength([1, [2, 3]])) // ➞ 3
console.log(getLength([1, [2, [3, 4]]])) // ➞ 4
console.log(getLength([1, [2, [3, [4, [5, 6]]]]])) // ➞ 6
function getLength(arr){
return arr.reduce(function fn(acc, item) {
if(Array.isArray(item)) return item.reduce(fn);
return acc + 1;
}, 0);
}
console.log(getLength([1, [2, 3]]))
console.log(getLength([1, [2, [3, 4]]]))
console.log(getLength([1, [2, [3, [4, [5, 6]]]]]))
递归计算不再递归的元素数量:
function getLength(a) {
let count = 0;
for (const value of a) {
if (Array.isArray(value)) {
// Recurse
count += getLength(value);
} else {
// Count
++count;
}
}
return count;
}
示例:
function getLength(a) {
let count = 0;
for (const value of a) {
if (Array.isArray(value)) {
count += getLength(value);
} else {
++count;
}
}
return count;
}
console.log(getLength([1, [2, 3]]));
console.log(getLength([1, [2, [3, 4]]]));
console.log(getLength([1, [2, [3, [4, [5, 6]]]]]));
function getLength(array) {
let count = 0;
for (const item of array) count += !Array.isArray(item) || getLength(item);
return count;
}
console.log(getLength([1, [2, 3]]));
console.log(getLength([1, [2, [3, 4]]]));
console.log(getLength([1, [2, [3, [4, [5, 6]]]]]));