Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

JavaScript แปลงอาร์เรย์ของอ็อบเจกต์เป็นอ็อบเจกต์ของอาร์เรย์

สมมติว่าเรามีข้อมูลทีมจัดอยู่ในอาร์เรย์ของอ็อบเจกต์ หน้าที่คือแปลงข้อมูลนี้เป็นอ็อบเจกต์ที่มี key เป็น role และ value เป็นอาร์เรย์ของชื่อผู้เล่น

อาร์เรย์ตัวอย่าง

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 แล้ว ให้ push player เข้าไปใน value มิฉะนั้น กำหนดให้เป็นอาร์เรย์ที่มี player เดียว

โค้ดเต็ม

ตัวอย่าง

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' ]
}