프론트엔드/JavaScript
자바스크립트 고차함수 - Map()
ksge7
2020. 10. 3. 07:32
Map 메서드란?
for 문을 대신할 수 있는 메서드로 forEach뿐 아니라 Map()도 있다.
forEach 메서드는 for를 대체하여 배열을 순회시키며 어떤 동작을 반복하기 쉽게 한다.
반면 Map 메서드는 for문을 대체하여 배열을 순회시키며 새로운 배열을 만든다.
즉 특정 배열을 복사하기 쉽게 만든 것이 Map() 메서드다.
<body>
<script>
let num = [1,3,5]; // 배열 선언
let num2 = [];
for(i=0; i < num.length; i++){
num2[i] = num[i];
} // for문을 이용한 배열 복사
console.log(num2);
// [1,3,5] 출력
</script>
</body>
기존 for문을 이용한 배열 복사는 위 코드와 같다.
배열을 별도로 선언하고 내용을 복사해주는 식이다.
<body>
<script>
let num = [1,3,5];
let num2 = [];
num.forEach(function(item,index){
num2[index] = item;
})
console.log(num2)
// [1,3,5] 출력
</script>
</body>
forEach를 써도 배열을 따로 선언하고 복사해야해서 번거롭다.
<body>
<script>
let num = [1,3,5];
let num2 = [];
let num2 = num.map(function(item){ return item });
console.log(num2)
// [1,3,5] 출력
</script>
</body>
Map 메서드를 쓰면 for문이나 forEach 메서드보다 편하게 배열을 복사할 수 있다.
<body>
<script>
let num = [1,3,5];
let num2 = num.map(function(item, index, self){
return "아이템:"+item+" 인덱스:"+index+" 배열:"+self;
});
console.log(num2);
// ["아이템:1 인덱스:0 배열:1,3,5", "아이템:3 인덱스:1 배열:1,3,5", "아이템:5 인덱스:2 배열:1,3,5"]
</script>
</body>
Map 메서드는 인자로 받는 함수의 인자로 Map메서드를 호출한
배열의 요소, 인덱스, 배열 그 자체를 전달받을 수 있다.
<body>
<script>
let num = [1,3,5];
let num2 = num.map(function(item){
return item * 2;
});
let num3 = num.map(function(item){
return item * item;
});
console.log(num2); // 2, 6, 10 출력
console.log(num3); // 1, 9, 25 출력
</script>
</body>
Map 메서드는 콜백함수의 인자로 받은 요소들을 통해 다양한 연산이 가능하다.