Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

JavaScript การแปลงอาร์เรย์ของวัตถุเป็นวัตถุของอาร์เรย์


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

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

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