我想知道从多层嵌套对象中提取相同命名对象的最佳方法是什么。
我目前有一个看起来像这样的对象,我想从其中提取parentLocationCluster
个对象。
const foo = {
id: '1',
name: 'boo',
parentLocationCluster: {
id: 1,
name: 'foo',
parentLocationCluster: {
id: 2,
name: 'fii',
parentLocationCLuster: {
id: 3,
name: 'faa',
},
},
},
};
现在我可以像这样嵌套if
语句:
const { parentLocationCluster } = foo;
if(parentLocationCluster) {
//do something
if(parentLocationCluster.parentLocationCluster) {
//do something
}
}
但是我感觉这效率很低(这就是我目前正在做的事情)。此外,对象会随嵌套的parentLocationCluster对象的数量而变化,即,一个对象可以包含10个级别的parentLocationClusters。
什么是最好的方法?
答案 0 :(得分:1)
以下代码段以递归方式访问所有嵌套簇,并对其进行任何处理。
const foo = {
id: '1',
name: 'boo',
parentLocationCluster: {
id: 1,
name: 'foo',
parentLocationCluster: {
id: 2,
name: 'fii',
parentLocationCluster: {
id: 3,
name: 'faa',
},
},
},
};
function readCluster(obj) {
const cluster = obj.parentLocationCluster
if (cluster) {
// Do something
console.log(cluster.name)
readCluster(cluster)
} else
return;
}
readCluster(foo);