我有这种json:
const a = [{
value: 5,
sum: 32,
},
{
value 6,
sum: 32,
}]
如何获得此结果:
const a = [{
value1: 5,
value2: 6,
sum: 32
}]
我知道我有“钥匙”碰撞。有可能得到那个结果吗? 谢谢!
答案 0 :(得分:1)
好吧,从理论上讲,您可以合并所有道具,并维护索引以随意创建最新的键。
可以按照以下代码片段进行操作,但是我并没有对此进行全面的测试。
我确实没有看到合并数据的好处,因为似乎突然所有的上下文都将丢失,您怎么知道哪个sum
与哪个value
const a = [{
value: 5,
sum: 32,
},
{
value: 6,
sum: 32,
},
{
value: 7,
sum: 16
},
{
value: 5,
sum: 16
}];
function mergeObjectsInArray( array ) {
const keys = {};
return [ array.reduce( (current, item) => {
Object.keys( item ).forEach( key => {
let target = key;
if (keys[key]) {
if (current[key] === item[key]) {
// same value
return;
}
for (let i = 1; i <= keys[key]; i++) {
if (current[key+i] === item[key]) {
// same value in previous iterations
return;
}
}
target = key + (++keys[key]);
if (keys[key] === 2) {
// delete the original key and replace it with key1
// only needs to happen once
let temp = current[key];
delete current[key];
current[key+'1'] = temp;
}
current[target] = item[key];
return;
}
keys[key] = 1;
current[target] = item[key];
} );
return current;
}, {})];
}
console.log( mergeObjectsInArray( a ) );