สมมติว่าเรามีอาร์เรย์ของวัตถุเช่นนี้ −
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' ]