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