通过对象键合并对象数组

时间:2018-11-09 11:30:39

标签: javascript

鉴于上面的屏幕截图,我想通过“ hand”属性合并此数组,以便最终结果为

[{hand: "KdAhAsKs", checkPct: 28, betPct: 72},{hand: "KcAhAsKs", checkPct: 28, betPct: 72}]

2 个答案:

答案 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));