【发布时间】:2021-04-07 20:27:46
【问题描述】:
以下是我拥有的 2 个数组,
var g= [
{ id: 36, name: 'AAA', goal: 'yes' },
{ id: 40, name: 'BBB', goal: 'yes' },
{ id: 39, name: 'JJJ', goal: 'yes' },
{ id: 27, name: 'CCC', goal: 'yes' }];
var c= [
{ id: 36, color:"purple" },
{ id: 40, color:"purple" },
{ id: 100, color:"pink"} ];
期望的输出(左连接'id'):
res = [{ id: 36, name: 'AAA', goal: 'yes' , color:"purple"}, { id: 40, name: 'BBB', goal: 'yes', color:"purple" }]
这是一个合并的现有逻辑,但我正在寻找左连接的逻辑:
function mergeBy(key, data) {
return Array.from(data
.reduce((m, o) => m.set(o[key], { ...m.get(o[key]), ...o }), new Map)
.values()
);
}
【问题讨论】:
-
数组是否按照
id排序? -
这根本不是“左连接”。您的结果意味着只需添加对象出现在第一个数组中的第二个数组的属性 - 如果有更接近内部连接的任何内容。
-
@Jamiec:正如我在问题中所说,我有这个合并逻辑,但我不知道如何实现左连接。
-
@SomShekharMukherjee:目前没有,但可以排序
-
但您不是要求左连接!您要求合并对象(类似于内部连接)。看看我的答案是不是你想要的
标签: javascript arrays join