Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

map() 객체 제목의 배열을 다른 속성 값 JavaScript를 기반으로 하는 새 배열로

<시간/>

다음과 같은 객체 배열이 있다고 가정해 보겠습니다. -

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

우리는 이 배열을 가져와서 매핑하고 각 특정 개체에 대해 "count" 횟수만큼 반복되는 국가 이름을 가진 문자열 배열을 반환하는 함수를 작성해야 합니다.

따라서 이 객체에 대한 함수의 출력은 다음과 같아야 합니다. -

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