我有两个数组arr1和arr2:
const arr1 = [
{
"test_id": 1,
"type_cd": "C",
"status_cd": "C"
},
{
"test_id": 2,
"type_cd": "C",
"status_cd": "C"
},
{
"test_id": 3,
"type_cd": "C",
"status_cd": "C"
},
{
"test_id": 4,
"type_cd": "C",
"status_cd": "C"
},
{
"test_id": 5,
"type_cd": "C",
"status_cd": "C"
},
{
"test_id": 6,
"type_cd": "C",
"status_cd": "C"
}
];
arr2:
const arr2 = [
[
{
"resume_id": 200278,
"test_id": 1,
"resume_type_cd": "O",
"status": "Approved - Post Pending",
"resume_status_cd": "APPR"
},
{
"resume_id": 200286,
"test_id": 1,
"resume_type_cd": "C",
"status": "Chief Review",
"resume_status_cd": "NAPR"
}
],
[
{
"resume_id": 200296,
"test_id": 2,
"resume_type_cd": "C",
"status": "Chief Review",
"resume_status_cd": "NAPR"
},
{
"resume_id": 200298,
"test_id": 2,
"resume_type_cd": "O",
"status": "Approved - Post Pending",
"resume_status_cd": "APPR"
}
],
[],
[],
[],
[]
];
我想基于test_id修改arr1以使其具有resume_id,并在arr1 obj中附加status_cd和type_cd,将成为resumeId,resume_type_cd和状态。
这是我尝试过的:
for(let i=0;i<arr1.length;i++){
let arr =[];
for(let j=0;j<arr2.length;j++){
for(let k=0;k<arr2[j].length;k++){
if(arr1[i].test_id === arr2[j][k].test_id){
arr1[i].resume_id = arr2[j][k].resume_id;
arr1[i].type_cd = arr2[j][k].resume_type_cd;
arr1[i].status_cd = arr2[j][k].status;
}
}
}
}
当前输出:
[{"test_id":1,"type_cd":"C","status_cd":"Chief Review","resume_id":200286},{"test_id":2,"type_cd":"O","status_cd":"Approved - Post Pending","resume_id":200298},{"test_id":3,"type_cd":"C","status_cd":"C"},{"test_id":4,"type_cd":"C","status_cd":"C"},{"test_id":5,"type_cd":"C","status_cd":"C"},{"test_id":6,"type_cd":"C","status_cd":"C"}]
预期输出: 基本上,我只想考虑test_id存在resume_id的最终数组中的对象。因此,输出数组将仅具有test_id:1和2,其resume_id不是3、4、5和6。
[
{
"test_id": 1,
"resume_id":200278,
"type_cd": "O",
"status_cd": "Approved - Post Pending"
},
{
"test_id": 1,
"resume_id":200286,
"type_cd": "C",
"status_cd": "Chief Review"
},
{
"test_id": 2,
"resume_id": 200296,
"type_cd": "C",
"status_cd": "Chief Review"
},
{
"test_id": 2,
"resume_id": 200298,
"type_cd": "O",
"status_cd": "Approved - Post Pending"
}
];
答案 0 :(得分:0)
arr2
变成1d数组,这可以使用Array.reduce
完成。
const arr1 = [
{
"test_id": 1,
"type_cd": "C",
"status_cd": "C"
},
{
"test_id": 2,
"type_cd": "C",
"status_cd": "C"
},
{
"test_id": 3,
"type_cd": "C",
"status_cd": "C"
},
{
"test_id": 4,
"type_cd": "C",
"status_cd": "C"
},
{
"test_id": 5,
"type_cd": "C",
"status_cd": "C"
},
{
"test_id": 6,
"type_cd": "C",
"status_cd": "C"
}
];
const arr2 = [
[
{
"resume_id": 200278,
"test_id": 1,
"resume_type_cd": "O",
"status": "Approved - Post Pending",
"resume_status_cd": "APPR"
},
{
"resume_id": 200286,
"test_id": 1,
"resume_type_cd": "C",
"status": "Chief Review",
"resume_status_cd": "NAPR"
}
],
[
{
"resume_id": 200296,
"test_id": 2,
"resume_type_cd": "C",
"status": "Chief Review",
"resume_status_cd": "NAPR"
},
{
"resume_id": 200298,
"test_id": 2,
"resume_type_cd": "O",
"status": "Approved - Post Pending",
"resume_status_cd": "APPR"
}
],
[],
[],
[],
[]
];
const arr2Modified = arr2.reduce((acc, cur) => {
if (cur.length > 0) {
acc.push(...cur);
};
return acc;
}, []);
const result = arr1.reduce((acc, cur) => {
const existedItems = arr2Modified.filter((item) => item.test_id === cur.test_id);
existedItems.forEach((item) => {
acc.push({
test_id: cur.test_id,
resume_id: item.resume_id,
type_cd: item.resume_type_cd,
status_cd: item.status
});
});
return acc;
}, []);
console.log(result);
答案 1 :(得分:0)
如果要使用循环执行此操作,则可以使用continue statement