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