我有一组数据。我需要通过 code
字段找到对应的对象并合并它们。如何做到这些?
const data = [
{
id: 'K1',
code: 'KBP',
zone: 'zone-k1'
},
{
id: 'K2',
code: 'KBP',
zone: 'zone-k2'
},
{
id: 'H',
code: 'HCL',
zone: 'zone-h'
}
]
const expected = [
{
id: ['K1', 'K2'],
code: 'KBP',
zone: ['zone-k1', 'zone-k2']
},
{
id: 'H',
code: 'HCL',
zone: 'zone-h'
}
]
我试过使用 lodash uniqBy
和 groupBy
,但没有成功。我认为应该通过 reduce 来完成:
const res = () => {
const similar = data.reduce((item, acc) => {
return item.id === acc.id;
})
}
最佳答案
您可以使用 Array.prototype.reduce
并按 code
对数据进行分组。
const data = [
{
gateId: 'K1',
code: 'KBP',
zone: 'zone-k1'
},
{
gateId: 'K2',
code: 'KBP',
zone: 'zone-k2'
},
{
gateId: 'H',
code: 'HCL',
zone: 'zone-h'
}
];
const dataset = data.reduce((acc, curr) => {
if (acc[curr.code] === undefined) {
acc[curr.code] = {
code: curr.code,
id: [curr.gateId],
zone: [curr.zone],
}
} else {
acc[curr.code].id.push(curr.gateId)
acc[curr.code].zone.push(curr.zone)
}
return acc;
}, {});
const res = Object.values(dataset);
console.log(res);
.as-console-wrapper{ min-height: 100vh !important; top: 0}
更多你可以看到这个answer
关于javascript - JS : find and merge similar objects in array by key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72188369/