簡體   English   中英

使用 lodash 的緊湊對象數組

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM