简体   繁体   English

根据 id 合并对象数组中的对象

[英]Merge objects in array of objects based on id

I have an array of objects like this How to achieve output form of this array ?我有一个这样的对象数组如何实现这个数组的输出形式? Input:输入:

[
 { meta_key: 'nickname', meta_value: 'testqa2', id: '10' },
  { meta_key: 'first_name', meta_value: 'TEST', id: '10' },
  { meta_key: 'last_name', meta_value: 'QA', id: '10' },
  { meta_key: 'nickname', meta_value: 'testqa10', id: '11' },
  { meta_key: 'first_name', meta_value: 'TEST', id: '11' },
  { meta_key: 'last_name', meta_value: 'QA', id: '11' }
]

Output输出

[
 {id:'10 , nickname:'testqa2 , first_name:'TEST' , last_name :'QA'},
 {id:'10 , nickname:'testqa10, first_name:'TEST' , last_name :'QA'}
]

you can do it using reduce like this你可以像这样使用reduce来做到这一点

 const data = [ { meta_key: 'nickname', meta_value: 'testqa2', id: '10' }, { meta_key: 'first_name', meta_value: 'TEST', id: '10' }, { meta_key: 'last_name', meta_value: 'QA', id: '10' }, { meta_key: 'nickname', meta_value: 'testqa10', id: '11' }, { meta_key: 'first_name', meta_value: 'TEST', id: '11' }, { meta_key: 'last_name', meta_value: 'QA', id: '11' } ] const result = Object.values(data.reduce((res, {id, meta_key, meta_value}) => { return { ...res, [id]: { id, ...res[id], [meta_key]: meta_value } } }, {})) console.log(result)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM