สมมติว่ามีอาร์เรย์ของออบเจ็กต์สองอาร์เรย์ดังนี้:
const arr1 = [
{id:'124',name:'qqq'},
{id:'589',name:'www'},
{id:'45',name:'eee'},
{id:'567',name:'rrr'}
];
const arr2 = [
{id:'124',name:'ttt'},
{id:'45',name:'yyy'}
];
เราต้องเขียนฟังก์ชัน JavaScript ที่รับสองออบเจ็กต์ดังกล่าว ฟังก์ชันควรค้นหาในอาร์เรย์แรกออบเจ็กต์ที่มีคุณสมบัติ "id" เหมือนกับที่อยู่ในอาร์เรย์ที่สอง
จากนั้นฟังก์ชันควรแทนที่คุณสมบัติ "name" ของออบเจ็กต์เหล่านั้นด้วยคุณสมบัติ "name" ที่สอดคล้องจากออบเจ็กต์ของอาร์เรย์ที่สอง
ดังนั้น สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรเป็นดังนี้:
const output = [
{id:'124',name:'ttt'},
{id:'589',name:'www'},
{id:'45',name:'yyy'},
{id:'567',name:'rrr'}
];
ตัวอย่าง
โค้ดสำหรับนี้จะเป็นดังนี้:
const arr1 = [
{id:'124',name:'qqq'},
{id:'589',name:'www'},
{id:'45',name:'eee'},
{id:'567',name:'rrr'}
];
const arr2 = [
{id:'124',name:'ttt'},
{id:'45',name:'yyy'}
];
const replaceByOther = (arr1, arr2) => {
for(let i = 0; i < arr1.length; i++){
const el = arr1[i];
const index = arr2.findIndex(elm => el['id'] === elm['id']);
if(index === -1){
continue;
};
else['name'] = arr2[index]['name'];
};
};
replaceByOther(arr1, arr2);
console.log(arr1);
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็นดังนี้:
[
{ id: '124', name: 'ttt' },
{ id: '589', name: 'www' },
{ id: '45', name: 'yyy' },
{ id: '567', name: 'rrr' }
]