สมมติว่าเรามีข้อมูลต่อไปนี้เกี่ยวกับทีมที่จัดอยู่ในอาร์เรย์ของวัตถุ งานของเราคือการแปลงข้อมูลนี้เป็นวัตถุที่มีคีย์เป็นบทบาทและค่าเป็นอาร์เรย์ของชื่อผู้เล่น
อาร์เรย์ตัวอย่างของเรา -
const team = [{
role: 'Batsman',
player: 'V Kohli'
}, {
role: 'Wicket Keeper',
player: 'KL Rahul'
}, {
role: 'Batsman',
player: 'R Sharma'
}, {
role: 'Wicket Keeper',
player: 'R Pant'
}, {
role: 'Bowler',
player: 'B Kumar'
}, {
role: 'Bowler',
player: 'M Shami'
}, ] มากำหนดฟังก์ชัน objectify() ที่รับอาร์เรย์เป็นอาร์กิวเมนต์และส่งกลับวัตถุที่สอดคล้องกัน
รหัสสำหรับสิ่งนี้จะเป็น −
const objectify = (team) => {
const teamObject = {};
team.forEach(member => {
if(teamObject[member.role]){
teamObject[member.role].push(member.player);
}else{
teamObject[member.role] = [member.player];
}
});
return teamObject;
}
console.log(objectify(team)); ที่นี่ เราวนรอบรายการอาร์เรย์ทีละรายการ หากมีอยู่ใน teamObject เราจะผลักผู้เล่นเข้าสู่ค่าของมัน มิฉะนั้น เราจะกำหนดอาร์เรย์ให้กับผู้เล่นคนเดียว
นี่คือรหัสที่สมบูรณ์ -
ตัวอย่าง
const team = [{
role: 'Batsman',
player: 'V Kohli'
}, {
role: 'Wicket Keeper',
player: 'KL Rahul'
}, {
role: 'Batsman',
player: 'R Sharma'
}, {
role: 'Wicket Keeper',
player: 'R Pant'
}, {
role: 'Bowler',
player: 'B Kumar'
}, {
role: 'Bowler',
player: 'M Shami'
}, ]
const objectify = (team) => {
const teamObject = {};
team.forEach(member => {
if(teamObject[member.role]){
teamObject[member.role].push(member.player);
}else{
teamObject[member.role] = [member.player];
}
});
return teamObject;
}
console.log(objectify(team)); ผลลัพธ์
ผลลัพธ์สำหรับรหัสนี้ในคอนโซลจะเป็น −
{
Batsman: [ 'V Kohli', 'R Sharma' ],
WicketKeeper: [ 'KL Rahul', 'R Pant' ],
Bowler: [ 'B Kumar', 'M Shami' ]
}