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

map() อาร์เรย์ของชื่ออ็อบเจ็กต์ในอาร์เรย์ใหม่ตามค่าคุณสมบัติอื่น ๆ JavaScript


สมมติว่าเรามีอาร์เรย์ของวัตถุเช่นนี้ −

const arr = [{
   country: "cananda",
   count: 2
}, {
      country: "jamaica",
      count: 2
}, {
      country: "russia",
      count: 1
}, {
      country: "india",
      count: 3
}, {
      country: "spain",
      count: 2
}, {
      country: "portugal",
      count: 1
}, {
      country: "italy",
      count: 1
}];

เราจำเป็นต้องเขียนฟังก์ชันที่ใช้ในอาร์เรย์นี้ แมปทับมัน และส่งคืนอาร์เรย์ของสตริงที่มีชื่อประเทศ "นับ" ซ้ำๆ กันสำหรับแต่ละอ็อบเจ็กต์

ดังนั้นผลลัพธ์ของฟังก์ชันสำหรับวัตถุนี้ควรเป็น −

['canada', 'canada', 'jamaica', 'jamaica', 'russia', 'india', 'india', 'india','spain', 'spain','portugal', 'italy']

มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน เราจะใช้วิธี Array.prototype.reduce() ที่นี่ -

ตัวอย่าง

const arr = [{
   country: "canada",
   count: 2
}, {
      country: "jamaica",
      count: 2
}, {
      country: "russia",
      count: 1
}, {
      country: "india",
      count: 3
}, {
      country: "spain",
      count: 2
}, {
      country: "portugal",
      count: 1
}, {
      country: "italy",
      count: 1
}];
const repeatCount = (arr) => {
   return arr.reduce((acc, val) => {
      let { count, country } = val;
      while(count--){
         acc.push(country);
      }
      return acc;
   }, []);
};
console.log(repeatCount(arr));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

[
   'canada', 'canada',
   'jamaica', 'jamaica',
   'russia', 'india',
   'india', 'india',
   'spain', 'spain',
   'portugal', 'italy'
]