输入数组:
var arr1 = [{EmpID:'1',Name:'PB',EmpCode:'10001'},{EmpID:'2',Name:'SS',EmpCode:'10002'}];
var arr2 = [{EmpID:'1',Address:'GGN'},{EmpID:'2',Address:'SP-GGN'}];
预期产出:
[{EmpID:'1',Name:'PB',EmpCode:'10001',Address:'GGN'},{EmpID:'2',Name:'SS',EmpCode:'10002',Address:'SP-GGN'}];
我试过下面的逻辑
function fun(){
var arr1 = [{EmpID:'1',Name:'PB',EmpCode:'10001'},{EmpID:'2',Name:'SS',EmpCode:'10002'}];
var arr2 = [{EmpID:'1',Address:'GGN'},{EmpID:'2',Address:'SP-GGN'}];
var arr3= [];
for(var k=0; k < arr1.length; k++){
arr3.push(arr1[k]);
}
for(var k=0; k < arr2.length; k++){
arr3.push(arr2[k]);
}
console.log(arr3);
var arr4 = [...arr1, ...arr2];
console.log(arr4);
}
fun();
输出结果:
[{"EmpID": "2", "Name": "SS", "EmpCode": "10002"},{EmpID: '2', Name: 'SS', EmpCode: '10002'},{EmpID: '1', Address: 'GGN'},{EmpID: '2', Address: 'SP-GGN'}]
我们不能使用
array.filter()
、.find()
、嵌套循环等等,只允许自定义逻辑。
预期产出:
[{EmpID:'1',Name:'PB',EmpCode:'10001',Address:'GGN'},{EmpID:'2',Name:'SS',EmpCode:'10002',Address:'SP-GGN'}];
为了达到你想要的效果,你可以使用嵌套的 for 循环来匹配两个数组中的 EmpID。我认为这应该有效:
function mergeArrays() {
var arr1 = [{EmpID:'1',Name:'PB',EmpCode:'10001'},{EmpID:'2',Name:'SS',EmpCode:'10002'}];
var arr2 = [{EmpID:'1',Address:'GGN'},{EmpID:'2',Address:'SP-GGN'}];
var resultArr = [];
for (var i = 0; i < arr1.length; i++) {
for (var j = 0; j < arr2.length; j++) {
if (arr1[i].EmpID === arr2[j].EmpID) {
var mergedObj = {...arr1[i], ...arr2[j]};
resultArr.push(mergedObj);
}
}
}
console.log(resultArr);
}
我已经更新了你的代码,你正在做的事情有一些小错误,你需要在第一个循环中放置第二个循环,这样你就可以匹配
EmpID
然后你在对象中Address
需要根据EmpID
添加然后你需要在arr3
中推送对象,如下面的代码所示。
function fun(){
var arr1 = [{EmpID:'1',Name:'PB',EmpCode:'10001'},{EmpID:'2',Name:'SS',EmpCode:'10002'}];
var arr2 = [{EmpID:'1',Address:'GGN'},{EmpID:'2',Address:'SP-GGN'}];
var arr3= [];
for(var k=0; k < arr1.length; k++){
let obj = {...arr1[k]}
for(var j=0; j < arr2.length; j++){
if (arr1[k].EmpID === arr2[j].EmpID) {
obj = {...obj, "Address": arr2[j].Address}
}
}
arr3.push(obj);
}
console.log(arr3);
}
fun();
const arr1 = [{
EmpID: '1',
Name: 'PB',
EmpCode: '10001'
}, {
EmpID: '2',
Name: 'SS',
EmpCode: '10002'
}];
const arr2 = [{
EmpID: '1',
Address: 'GGN'
}, {
EmpID: '2',
Address: 'SP-GGN'
}];
const arr3 = arr1.map((arr) => {
const x = arr2.filter((i) => arr.EmpID === i.EmpID)
return { ...arr,
...x[0]
}
})
console.log(arr3)
const arr1 = [
{ EmpID: "1", Name: "PB", EmpCode: "10001" },
{ EmpID: "2", Name: "SS", EmpCode: "10002" },
];
const arr2 = [
{ EmpID: "1", Address: "GGN" },
{ EmpID: "2", Address: "SP-GGN" },
];
const arr3 = arr1.map((arr, index) => {
const value = Object.values(arr1[index])[0];
const indexArr2 = arr2.find((ar2) => ar2.EmpID === value);
return (arr = { ...arr, ...indexArr2 });
});
console.log("arr3 :>> ", arr3);