Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Ánh xạ mảng đối tượng thành mảng mới dựa trên giá trị thuộc tính khác JavaScript

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