我有一个对象,在获取api时其深度可能会增加。
假设它是有孩子的父母,那么最初看起来像这样。
{
name: 'Mary'
children: [
{name: 'Jude'},
{name: 'Kathy'},
{name: 'Joe'}
]
}
现在我想获取API并获取Kathy的孩子
回应是凯西和她的孩子们的对象
假设:
{
name: 'Kathy',
children: [
{name: 'April'},
{name: 'Suzanne'},
{name: 'Paul'}
]
}
所以我最终要拥有
{
name: 'Mary'
children: [
{
name: 'Jude'
},
{
name: 'Kathy',
children: [
{name: 'April'},
{name: 'Suzanne'},
{name: 'Paul'}
]
},
{
name: 'Joe'
}
]
}
然后也许得到Paul或Joe的
如果我事先知道深度,我可以为第一个例子做
newObj = {... oldObj,孩子:{... oldObj.children,... apiResponse}}
对吗?
但是深度是可变的(不是未知的而是可变的)怎么办?
我该怎么做?
谢谢
答案 0 :(得分:1)
像这样吗?
function find(name, node) {
if (node.name == name){
return node;
}
if (node.children) {
for(const child of node.children){
const match = find(name, child);
if(match){
return match;
}
}
}
return null;
}
const root = {
name: 'Mary',
children: [
{name: 'Jude'},
{name: 'Kathy'},
{name: 'Joe'}
]
};
const match = find("Kathy",root);
const fullNode = {
name: 'Kathy',
children: [
{name: 'April'},
{name: 'Suzanne'},
{name: 'Paul'}
]
}
Object.assign(match, fullNode);
console.log(root);