繁体   English   中英

使用Lodash展平嵌套对象

[英]Flatten nested objects using Lodash

我正在使用设置为数组的属性循环对象,然后我按以下方式使用它:

  let merged= [];
  for (let sup of superObject) {
    let sname = sup.superObjectName;
    for (let sub of sup.subObject) {
      merged.push({superObject: sname, subObject: sub.subObjectName})
    }
  }

现在上面的代码工作并完成工作,但我觉得它可以使用Lodash进行改进,我无法让它工作。 我尝试以几种不同的方式使用flatMap ,但似乎都没有用,并且在功能方面正确的方向看起来似乎没有改进。 有任何想法吗?

更新: superObject示例:

{
   superObjectName: "someName",
   subObject: [
      {subObjectName: "someSubName"},
      {subObjectName: "someSubName2"}
    ]
 }

这与您的代码相同:

const merged = _.flatMap(superObject, ({superObjectName, subObject}) =>
    _.map(subObject, ({subObjectName}) => ({
        superObject: superObjectName,
        subObject: subObjectName
    }))
);

中的每个值superObject变换为阵列与map ,然后内部扁平flatMap

你可以使用flatMap ,获取道具并使用lodash获得这样的欲望结果。

 var data= [{ superObjectName: "someName", subObject: [ {subObjectName: "someSubName"}, {subObjectName: "someSubName2"} ] }]; const result = _.flatMap(data, ({ superObjectName, subObject}) => _.map(subObject, ({subObjectName})=> ({superObject: superObjectName, subObject: subObjectName})) ); console.log(result); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM