=> 나름대로 이해하며 해석해보자면, map()은 array의 모든 요소를 돌면서 주어진 function을 호출한 결과를 담은 새로운 array를 만들어내는 메서드이다.
=> 배열의 각 요소에 접근해 어떠한 함수를 실행시키고 그 결과를 모아 새로운 배열을 반환하고 싶을 때 사용하면 되겠다.
// Arrow function
map((element) => { /* ... */ })
map((element, index) => { /* ... */ })
map((element, index, array) => { /* ... */ })
// Callback function
map(callbackFn)
map(callbackFn, thisArg)
// Inline callback function
map(function(element) { /* ... */ })
map(function(element, index) { /* ... */ })
map(function(element, index, array){ /* ... */ })
map(function(element, index, array) { /* ... */ }, thisArg)
map()을 실행하면 각각의 요소에 콜백함수를 실행한 결과를 담은 새로운 array가 반환된다.
따라서, 아래와 같은 경우엔 map()보다는 forEach나 for...of를 사용하는게 낫다.
( 왜냐하면 새로운 array를 반환해도 사용하지 않으니까!! )
class Asset {
constructor(name,shape,price) {
this.name = name;
this.shape = shape;
this.price = price;
}
}
const assetList = [
new Asset('car', '🚗', 10000000),
new Asset('house', '🏡',2000000000),
new Asset('cash','💵', 3000000)
];
//Q. assetList에서 price만 담은 배열을 만들고 싶다면?
const priceList = assetList.map(asset => asset.price);
console.log(priceList); //output: [10000000, 2000000000, 3000000]
참고
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map