8.4 map과 filter

1) map

  • 배열 요소를 변형

  • 사본을 반환하기 때문에 원래 배열은 바뀌지 않음

  • 일정한 형식의 배열을 다른 형식으로 바꿔야하는 경우 사용

const cart = [ { name: "Widget", price: 9.95 }, { name: "Gadget", price: 22.95 } ];
const names = cart.map(x => x.name); // ["Widget", "Gadget"]
const prices = cart.map(x => x.price); // [9.95, 22.95]
const discountPrices = prices.map(x => x * 0.9); // [7.96, 18.36]
  • 두 배열의 요소를 인덱스에 따라 결합할 수 있음

const items = ["Widget", "Gadget"];
const prices = [9.95, 22.95];
const cart = items.map((x, i) => ({ name: x, price: prices[i] }));
// cart: [{ name: "Widget", price: 9.95 }, { name: "Gadget", price: 22.95 }]

2) filter

  • 배열에서 필요한 것들만 남길 목적으로 사용

  • 사본을 반환하며 새 배열에는 필요한 요소만 남음

// 카드 덱을 만듭니다.
const cards = [];
for (let suit of ['H', 'C', 'D', 'S']) // 하트, 클로버, 다이아몬드, 스페이드
    for (let value=1; value<=13; value++)
        cards.push({ suit, value });
        
// value가 2인 카드
cards.filter(c => c.value === 2);
// [ 
//     { suit: 'H', value: 2}, 
//     { suit: 'C', value: 2}, 
//     { suit: 'D', value: 2}, 
//     { suit: 'S', value: 2}, 
// ]

Last updated