Lodash嵌套集合的映射

4
我有如下的集合:
var realty = {
  name: 'Realty A',
  entrances: [
    {
      name: 'Entrance A',
      units: [
        {name: 'unitA', contracts: [{contractNo: 'no.963'}, {contractNo: 'no.741'}]},
        {name: 'unitB', contracts: [{contractNo: 'no.789'}, {contractNo: 'no.564'}]}
      ]
    },
    {
      name: 'Entrance B',
      units: [
        {name: 'unitC', contracts: [{contractNo: 'no.419'}, {contractNo: 'no.748'}]},
        {name: 'unitD', contracts: [{contractNo: 'no.951'}, {contractNo: 'no.357'}]}
      ]
    }
  ]
}

我正在尝试提取合同的集合。

我尝试使用lodash的'map'函数,如下所示:_.map(realty,'entrances.units.contracts')但是'property'迭代不适用于数组。

有什么想法可以提取所有合同的集合吗?也许lodash链可以帮助,但我不确定如何使用它 :/。

3个回答

2
这似乎可以解决问题。
_(realty.entrances).flatMap('units').flatMap('contracts').value()

1
如果你想要获取所有合同,使用lodash:
_.map(realty.entrances, e => e.units.map(u => u.contracts));

0

没有使用 lodash 的一种可能性

var contractsArray = []

realty.entrances.forEach( e => {
 let units = e.units;
 units.forEach( u => contractsArray.push(u.contracts));
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接