我想将其余值与 Javascript 对象中的相同键连接起来。 想要使用普通脚本或 lodash 来解决它..
示例:
obj = [
{ M: 'M1', F: '123-test-123', CODE: 'A' },
{ M: 'M1', F: '123-test-123', CODE: 'B' },
{ M: 'M1', F: '123-test-123', CODE: 'C' },
{ M: 'M2', F: '123-test-456', CODE: 'A' },
{ M: 'M2', F: '123-test-456', CODE: 'A' }
...
]
期望的结果:
obj = [
{ M: 'M1', F: '123-test-123', CODE: 'A,B,C' },
{ M: 'M2', F: '123-test-456', CODE: 'A,B' },
...
]
谢谢!!!
最佳答案
您可以使用Array.reduce()
来获得所需的输出:
var obj = [
{ M: 'M1', F: '123-test-123', CODE: 'A' },
{ M: 'M1', F: '123-test-123', CODE: 'B' },
{ M: 'M1', F: '123-test-123', CODE: 'C' },
{ M: 'M2', F: '123-test-456', CODE: 'A' },
{ M: 'M2', F: '123-test-456', CODE: 'A' }
];
var res = obj.reduce((acc, item) => {
let existItem = acc.find(({M, F}) => M === item.M && F === item.F);
if(existItem) {
existItem.CODE += ',' + item.CODE;
} else {
acc.push(item);
}
return acc;
}, []);
console.log(res);
除此之外使用另一种方式,Array.reduce()
:
var obj = [
{ M: 'M1', F: '123-test-123', CODE: 'A' },
{ M: 'M1', F: '123-test-123', CODE: 'B' },
{ M: 'M1', F: '123-test-123', CODE: 'C' },
{ M: 'M2', F: '123-test-456', CODE: 'A' },
{ M: 'M2', F: '123-test-456', CODE: 'A' }
];
var resObj = {};
obj.forEach((item) => {
let settingValues = resObj[item.M] ?
resObj[item.M].CODE += ',' + item.CODE :
resObj[item.M] = item;
});
console.log(Object.values(resObj));
关于javascript - 合并 JavaScript 对象重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59099781/