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

Merge objects in array of objects based on id

我有一组像这样的对象 如何实现这个数组的输出形式? 输入:

[
 { 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' }
]

输出

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

你可以像这样使用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)