鉴于上面的屏幕截图,我想通过“ hand”属性合并此数组,以便最终结果为
[{hand: "KdAhAsKs", checkPct: 28, betPct: 72},{hand: "KcAhAsKs", checkPct: 28, betPct: 72}]
答案 0 :(得分:1)
您可以使用array#reduce
在每个唯一的hand
对应的对象中累积公共属性,然后使用Object.values()
取出所有值。
const data = [{hand: "KdAhAsKs", checkPct: 28}, {hand: "KdAhAsKs", betPct: 72},{hand: "KcAhAsKs", checkPct: 28}, { hand: "KcAhAsKs", betPct: 72}],
result = Object.values(data.reduce((r,o) => {
r[o.hand] = r[o.hand] || {hand : o.hand};
r[o.hand] = {...r[o.hand], ...o};
return r;
},{}));
console.log(result);
答案 1 :(得分:0)
您可以尝试类似的方法。希望这会有所帮助。
const data = [{hand: "KdAhAsKs", checkPct: 28}, {hand: "KdAhAsKs", betPct: 72},{hand: "KcAhAsKs", checkPct: 28}, { hand: "KcAhAsKs", betPct: 72}];
const combine = (data) =>
data.reduce((acc, val) => {
const i = acc.findIndex(o => o.hand === val.hand);
if (i !== -1) {
acc[i] = { ...acc[i], ...val };
return acc;
}
else return acc.concat(val);
}, []);
console.log(combine(data));