Giả sử chúng ta có mảng đối tượng như sau:
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 }];Yêu cầu viết hàm nhận mảng này, duyệt qua và trả về mảng chuỗi với tên quốc gia lặp lại số lần bằng giá trị "count" của từng đối tượng.
Kết quả mong đợi:
['canada', 'canada', 'jamaica', 'jamaica', 'russia', 'india', 'india', 'india', 'spain', 'spain', 'portugal', 'italy']
Sử dụng Array.prototype.reduce():
Ví dụ
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));Kết quả
Đầu ra trong console sẽ là:
[ 'canada', 'canada', 'jamaica', 'jamaica', 'russia', 'india', 'india', 'india', 'spain', 'spain', 'portugal', 'italy' ]