let left = [
{ id: 1, num: 1 },
{ id: 3, num: 3 }
]
let right = [
{ id: 1, num: 11 },
{ id: 2, num: 12 }
]
// 怎么得到
let m = [
{ id: 1, num: 11 },
{ id: 3, num: 3 }
]
let left = [
{ id: 1, num: 1 },
{ id: 3, num: 3 }
]
let right = [
{ id: 1, num: 11 },
{ id: 2, num: 12 }
]
// 怎么得到
let m = [
{ id: 1, num: 11 },
{ id: 3, num: 3 }
]
var left = [
{ id: 1, num: 1 },
{ id: 3, num: 3 }
];
var right = [
{ id: 1, num: 11 },
{ id: 2, num: 12 }
];
var rightMap = right.reduce((acc,cur)=>(acc[cur.id]=cur,acc),{})
var res = left.map(item=>rightMap[item.id] || item);
结果
0: {id: 1, num: 11}
1: {id: 3, num: 3}
感觉上你是想先求left和right的并集,其中如果left和right中有同id的,以right的为准,如果有其它规则,则需要特殊处理,然后再抽取id=1和id=3的组成结果集。
var getM=function(lA,rA,mA){
let rt=[];
let OB={};
for(let i=0;i<lA.length;i++){
OB[lA[i]["id"]]=lA[i]["num"]
}
for(let i=0;i<rA.length;i++){
OB[rA[i]["id"]]=rA[i]["num"]
}
for(let i=0;i<mA.length;i++){
let tmp={"id":mA[i],"num":OB[mA[i]] }
rt.push(tmp)
}
return rt;
}
let left = [
{ id: 1, num: 1 },
{ id: 3, num: 3 }
];
let right = [
{ id: 1, num: 11 },
{ id: 2, num: 12 }
];
console.log( getM( left, right, [1,3]) )
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
不太清楚你是用来做什么的,但是实现m我觉得最简单的方法是这样
分别取出来,按次序push进m数组