[英]Compact array of objects using lodash
我有一个对象数组,比如第一个 json。
基于属性名称,我想将 zip 这个数组放在另一个数组中,就像那样。 如果名称与另一个 object 相同,则编译 object 并将其他属性和值设置为字段数组。
[
{
"name":"D1D1",
"attritube":"HOST_NAME",
"value_inv":"TEST1",
"value_prod":"TESTA1"
},
{
"name":"D1D1",
"attritube":"HOST_NAME",
"value_inv":"TEST2",
"value_prod":"TESTB1"
},
{
"name":"D2D2",
"attritube":"COMMENTS",
"value_inv":"TEST1",
"value_prod":"TESTA1"
}
]
[
{
"name":"D1D1",
"fields":[
{
"attritube":"HOST_NAME",
"value_inv":"TEST1",
"value_prod":"TESTA1"
},
{
"attritube":"HOST_NAME",
"value_inv":"TEST2",
"value_prod":"TESTB1"
}
]
},
{
"name":"D2D2",
"fields":[
{
"attritube":"COMMENTS",
"value_inv":"TEST1",
"value_prod":"TESTA1"
}
]
}
]
这不是很漂亮,当你有一个非常大的数据集时它不会表现得很好,但它是功能性的并且产生你期望的 output。
const arr = [ { "name":"D1D1", "attritube":"HOST_NAME", "value_inv":"TEST1", "value_prod":"TESTA1" }, { "name":"D1D1", "attritube":"HOST_NAME", "value_inv":"TEST2", "value_prod":"TESTB1" }, { "name":"D2D2", "attritube":"COMMENTS", "value_inv":"TEST1", "value_prod":"TESTA1" } ]; const newArr = _.chain(arr).groupBy('name').toPairs().map((val) => ({ name: val[0], fields: _.map(val[1], (v) => _.omit(v, ['name'])) })).value(); console.log(newArr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.