我想知道从多层嵌套对象中提取相同命名对象的最佳方法是什么。

我目前有一个看起来像这样的对象,我想从中提取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);

10-07 14:31