สมมติว่าเรามี parentArray ที่มีหลายซับอาร์เรย์ ขนาดเท่ากันทุกตัว แต่ละซับอาร์เรย์เป็นอาร์เรย์ของอ็อบเจกต์ที่มีสองคุณสมบัติ: key และ value ภายในซับอาร์เรย์ ยืนยันว่าไม่มีอ็อบเจกต์สองตัวที่มี key เหมือนกัน แต่ทุกซับอาร์เรย์มีคู่ key เดียวกัน n คู่ โดย n คือขนาดของซับอาร์เรย์
หน้าที่คือเตรียมอ็อบเจกต์ที่มี key เป็น key ของอ็อบเจกต์ และ value เป็นอาร์เรย์ที่มีค่าทั้งหมดสำหรับ key นั้น
อาร์เรย์ตัวอย่าง
const parentArray = [[
{ key: 123, value: 'India' },
{ key: 124, value: 'USA' },
{ key: 125, value: 'Japan' },
{ key: 126, value: 'Denmark' },
{ key: 127, value: 'Austria' },
], [
{ key: 124, value: 'Kenya' },
{ key: 126, value: 'UK' },
{ key: 123, value: 'Germany' },
{ key: 127, value: 'Spain' },
{ key: 125, value: 'Portugal' },
]];
เราจะวนลูปผ่าน parent array และซับอาร์เรย์ทีละตัว และถ้าเจอ key ตรงกัน ให้ push เข้าไปใน value array มิฉะนั้น สร้าง value array ใหม่
โค้ดเต็ม
ตัวอย่าง
const parentArray = [[
{ key: 123, value: 'India' },
{ key: 124, value: 'USA' },
{ key: 125, value: 'Japan' },
{ key: 126, value: 'Denmark' },
{ key: 127, value: 'Austria' },
], [
{ key: 124, value: 'Kenya' },
{ key: 126, value: 'UK' },
{ key: 123, value: 'Germany' },
{ key: 127, value: 'Spain' },
{ key: 125, value: 'Portugal' },
]];
const map = {};
parentArray.forEach(arr => {
arr.forEach(obj => {
const { key, value } = obj;
if(map[key]){
map[key].push(value);
}else{
map[key] = [value]
}
})
});
console.log(map);
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น
{
'123': [ 'India', 'Germany' ],
'124': [ 'USA', 'Kenya' ],
'125': [ 'Japan', 'Portugal' ],
'126': [ 'Denmark', 'UK' ],
'127': [ 'Austria', 'Spain' ]
}