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 valueRun Code Online (Sandbox Code Playgroud)
预期输出:[{id:1},{id:2},{id:5},{id:6},{id:7},{id:9}]
首先尝试合并和排序无法获得所需的结果提前致谢
你可以使用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)
| 归档时间: |
|
| 查看次数: |
1200 次 |
| 最近记录: |