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