[英]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.