Computer >> Máy Tính >  >> Lập trình >> Javascript

map () mảng tiêu đề đối tượng vào một mảng mới dựa trên JavaScript giá trị thuộc tính khác

Giả sử, chúng ta có một loạt các đối tượng như thế này -

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
}];

Chúng tôi được yêu cầu viết một hàm có trong mảng này, ánh xạ lên nó và trả về một mảng chuỗi có tên quốc gia được lặp lại số lần "đếm" cho từng đối tượng cụ thể.

Do đó, đầu ra của hàm cho đối tượng này phải là -

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

Hãy viết mã cho chức năng này. Chúng tôi sẽ sử dụng phương thức Array.prototype.reduce () tại đây -

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));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

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