繁体   English   中英

如何获取深度嵌套在对象中的数组中的项目总数?

[英]How to get the total number of items in arrays deeply nested in an object?

如下图计算数据数组的sub_sub部分,我想在控制台上显示如下图。

3
1

样本数据↓

    const items = [
    {
        id: "1",
        name: "a",
        sub: [
            {
                id: "1#1",
                name: "b",
                sub_sub: [
                    { id: "1#1#1", name: "b-a" },
                    { id: "1#1#2", name: "b-b" },
                ]
            },
            {
                id: "1#2",
                name: "c",
                sub_sub: [
                    { id: "1#2#1", name: "c-a" },
                ]
            },
        ]
    },
    {
        id: "2",
        name: "d",
        sub: [
            {
                id: "2#1",
                name: "e",
                sub_sub: [
                    { id: "1#2#1", name: "e-a" },
                ]
            }
        ]
    },
]

统计name:"a"和name:"d"中包含的sub_sub数组的个数,我想显示出来。 显示错误且不执行。

“控制台中的错误消息”无法读取 sub_lenght_calc 处未定义的属性“项目”

请问有人可以给我建议吗? 我的代码如下。

   function sub_lenght_calc(id:any){
        if(this.items.sub.sub_sub.length !== 0){
                for(let i = 0; i<this.items.sub.length ;i++){
                    const sub_sub_lenght = this.items.sub.sub_sub.forEach((element:any) => {
                      return  element.length ++
                    });
                }
                console.log(this.sub_sub_lenght);
        }

    }

sub_lenght_calc()

 const items = [ { id: "1", name: "a", sub: [ { id: "1#1", name: "b", sub_sub: [ { id: "1#1#1", name: "ba" }, { id: "1#1#2", name: "bb" }, ] }, { id: "1#2", name: "c", sub_sub: [ { id: "1#2#1", name: "ca" }, ] }, ] }, { id: "2", name: "d", sub: [ { id: "2#1", name: "e", sub_sub: [ { id: "1#2#1", name: "ea" }, ] } ] }, ] const result = items.map(item => item['sub'].reduce((count, record) => count + record['sub_sub'].length, 0)); console.log(result);

 const items = [ { id: "1", name: "a", sub: [ { id: "1#1", name: "b", sub_sub: [ { id: "1#1#1", name: "ba" }, { id: "1#1#2", name: "bb" }, ] }, { id: "1#2", name: "c", sub_sub: [ { id: "1#2#1", name: "ca" }, ] }, ] }, { id: "2", name: "d", sub: [ { id: "2#1", name: "e", sub_sub: [ { id: "1#2#1", name: "ea" }, ] } ] }, ] items.forEach(el => { const count = el.sub.reduce((total, curr) => total + curr.sub_sub.length, 0); console.log(count); });

通过简单的 for 循环

 const items = [ { id: "1", name: "a", sub: [ { id: "1#1", name: "b", sub_sub: [ { id: "1#1#1", name: "ba" }, { id: "1#1#2", name: "bb" }, ] }, { id: "1#2", name: "c", sub_sub: [ { id: "1#2#1", name: "ca" }, ] }, ] }, { id: "2", name: "d", sub: [ { id: "2#1", name: "e", sub_sub: [ { id: "1#2#1", name: "ea" }, ] } ] }, ] for (let i = 0; i < items.length; i++) { let temp = 0 for (let j = 0; j < items[i].sub.length; j++) { temp += items[i].sub[j].sub_sub.length; } console.log(temp) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM