我想知道从多层嵌套对象中提取相同命名对象的最佳方法是什么。
我目前有一个看起来像这样的对象,我想从中提取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。
最好的方法是什么?
最佳答案
以下代码段以递归方式访问所有嵌套集群,并对其进行任何处理。
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);