根据 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)
我有一组像这样的对象 如何实现这个数组的输出形式? 输入:
[
{ 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)