亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 lodash 的緊湊對象數組

使用 lodash 的緊湊對象數組

慕絲7291255 2021-11-12 14:13:52
我有一個對象數組,比如第一個 json?;趯傩悦Q,我想將這個數組壓縮到另一個中,就像那樣。如果名稱與另一個對象相同,則編譯該對象并將其他屬性和值設置為字段數組。[    {       "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"         }      ]   }]
查看完整描述

1 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

這并不漂亮,當您擁有非常大的數據集時,它的性能也不會很好,但它可以正常工作并產生您期望的輸出。


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>


查看完整回答
反對 回復 2021-11-12
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號