You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript嵌套数组层级元素数量统计实现方案

解决方案:统计嵌套数组各层级元素数量

需求明确

给定一个包含嵌套子数组的混合类型数组,需要统计每一层级的总元素数量:

  • 最外层是第0层级,元素数为数组本身的长度
  • 若同一层级存在多个子数组,这些子数组内的所有元素都归属于下一层级,累计计入该层级总数

实现思路

通过扩展Array的原型方法elementsAtLevels,用递归遍历嵌套数组,逐层统计对应层级的元素数量。

完整代码实现

Array.prototype.elementsAtLevels = function(level, levelData) {
    // 初始化层级与统计对象
    if (level === undefined) {
        level = 0;
    } else {
        level += 1;
    }
    if (levelData === undefined) {
        levelData = {};
    }

    // 记录当前层级的元素数量
    if (levelData[level] === undefined) {
        levelData[level] = this.length;
    } else {
        levelData[level] += this.length;
    }

    // 递归遍历子数组,统计下一层级
    this.forEach(item => {
        if (Array.isArray(item)) {
            item.elementsAtLevels(level, levelData);
        }
    });

    return levelData;
};

代码解释

  1. 参数初始化:
    • 首次调用时,level默认从0开始,levelData默认创建空对象存储统计结果
    • 递归调用子数组时,层级level自动+1,确保子数组元素计入下一层级
  2. 层级计数:
    • 每进入一个数组(外层或子数组),都会将当前数组长度累加到对应层级的计数中
  3. 递归遍历:
    • 遍历当前数组的每个元素,若元素是数组则递归调用方法,实现深度遍历统计

使用示例

// 测试混合嵌套数组
const testArray = [1, [2, 3], [4, [5, 6], 7], 8];
const result = testArray.elementsAtLevels();
console.log(result); 
// 输出:{0: 4, 1: 5, 2: 2}
// 解释:
// 第0层:外层数组的4个元素(1、[2,3]、[4,[5,6],7]、8)
// 第1层:两个子数组的元素总和:[2,3]的2个 + [4,[5,6],7]的3个 = 5个
// 第2层:最内层子数组[5,6]的2个元素

内容的提问来源于stack exchange,提问作者SumNeuron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:24:01