合并两个对象数组并按值排序

Inf*_*ity 1 javascript arrays sorting merge object

const a=[{id:1},{id:5},{id:7},{id:6}]
const b=[{id:7},{id:2},{id:5},{id:9}]

//Merge and sort in single array of object based on unique value
Run Code Online (Sandbox Code Playgroud)

预期输出:[{id:1},{id:2},{id:5},{id:6},{id:7},{id:9}]

首先尝试合并和排序无法获得所需的结果提前致谢

mr *_* hr 5

你可以使用Map Object.

const a = [{ id: 1 }, { id: 5 }, { id: 7 }, { id: 6 }];
const b = [{ id: 7 }, { id: 2 }, { id: 5 }, { id: 9 }];
const map = new Map();
a.forEach((x) => map.set(x.id, { ...x }));
b.forEach((x) => map.set(x.id, { ...x }));
const ret = [...map.values()].sort((x, y) => x.id - y.id);
console.log(ret);
Run Code Online (Sandbox Code Playgroud)

另一种解决方法是使用Array.prototype.reduce()方法。

const a = [{ id: 1 }, { id: 5 }, { id: 7 }, { id: 6 }];
const b = [{ id: 7 }, { id: 2 }, { id: 5 }, { id: 9 }];
const ret = Object.values(
  [...a, ...b].reduce((prev, c) => {
    const p = prev;
    const key = c.id;
    p[key] = { ...c };
    return p;
  }, {})
);
console.log(ret);
Run Code Online (Sandbox Code Playgroud)