从多层嵌套对象中动态提取相同的对象名称

时间:2019-06-15 11:15:31

标签: javascript reactjs

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

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

什么是最好的方法?

1 个答案:

答案 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);