Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JS/TS中找到处理(获取/修改)嵌套对象的最佳方法_Javascript_Typescript - Fatal编程技术网

Javascript 在JS/TS中找到处理(获取/修改)嵌套对象的最佳方法

Javascript 在JS/TS中找到处理(获取/修改)嵌套对象的最佳方法,javascript,typescript,Javascript,Typescript,我有下面的目标。我想添加一个附加属性,例如“category”:“我没有任何孩子” 所有没有任何子对象的子对象(名称为“some name 111,some name 222…”) { "name":"Grand Parent", "children":[ { "name":"Parent 1&q

我有下面的目标。我想添加一个附加属性,例如“category”:“我没有任何孩子” 所有没有任何子对象的子对象(名称为“some name 111,some name 222…”)

{
            "name":"Grand Parent",
            "children":[
                {
                "name":"Parent 1",
                "children":[
                    {
                        "name":"some name 111",
                        "qty":1                         
                    },
                    {
                        "name":"some name 222",
                        "qty":1
                    }
                ]
                },
                {
                    "name":"Parent 2",
                    "children":[
                        {
                            "name":"some name 333",
                            "qty":1
                        },
                        {
                            "name":"some name 444",
                            "qty":1
                        }
                    ]
                },
                {
                    "name":"Parent 3",
                    "children":[
                        {
                            "name":"some name 555",
                            "qty":1
                        }
                    ]
                },
                {
                    "name":"Parent 4",
                    "children":[
                        {
                            "name":"some name 666",
                            "qty":1
                        }
                    ]
                }
            ]
        }

我将实现一个递归函数,如果对象没有
子对象
prop,则向对象添加一个属性,否则,对其
子对象
数组中的每个元素调用相同的递归函数

const obj={“name”:“Grand Parent”,“children”:[{“name”:“Parent 1”,“children”:[{“name”:“some name 111”,“quaty”:1
},{name:“some name 222”,“qty”:1}]},{name:“Parent 2”,“children:[{name:“some name 333”,“qty”:1},{name:“some name 444”,“qty”:1}]},{name:“Parent 3”,“children:”[{name:“some name 555”,“qty”:1}]},{“name:“Parent 4”,“children 4”,“children:[{”name:“some name:“some name:“some name 666”,“qty”:1}]}]}}}}};
功能检查子项(obj){
如果(!obj.hasOwnProperty(“子项”)){
obj.category=“我没有孩子”;
}否则{
obj.children.forEach(child=>{
检查儿童(儿童);
})
}
}
检查儿童(obj);

控制台日志(obj)
您可以使用
forEach
和检查子对象来执行此操作。如果不存在,则可以将
child['category']=“我没有任何子对象”
添加到对象中。这只针对两个深度级别进行了定制(如问题中所述)

代码片段:

const data={“name”:“grandparent”,“children”:[{“name”:“Parent 1”,“children”:[{“name”:“some name 111”,“qty”:1},{“name”:“some name 222”,“qty”:1}],{“name”:“some name 222”,“qty”:1}],{“name”:“some name 555”,“children 2”,“children 2”,“children”:[{“some name 333”,“qty”:1},{“name 444”,“qty”:1},{“name”:“Parent 3”,“children 3”,“children name”:“some name 555”,“数量”:1}]},{“名称”:“父项4”,“子项”:[{“名称”:“某些名称666”,“数量”:1}]}]}
data.children.forEach(父项=>{
如果(!parent.children)
家长['category']=“我没有孩子”
其他的
parent.children.forEach(child=>{
如果(!child.children)
child['category']=“我没有孩子”
})
})

console.log(data)
只要保证数据的深度正好是两级,这就可以工作,但可能需要递归函数来根据需要进行深入。另外,我建议使用
forEach
而不是
map
,因为您不会从回调中返回任何内容。
data.children.forEach(parent => {
  if (!parent.children)
    parent['category'] = "I don't have any child"
  else
    parent.children.forEach(child => {
      if (!child.children)
        child['category'] = "I don't have any child"
    })
})