반응형
map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.
const array1 = [1, 4, 9, 16];
const map1 = array1.map(x => x * 2);
console.log(map1); // 결과: Array [2, 8, 18, 32]
위의 코드를 한번 보면 배열에 들어있는 값을 화살표 함수를 이용하여 배열의 값을 매개변수로 받아서 각 배열의 값을 반복문을 돌며 값을 출력하는 코드입니다.
map은 callback 함수를 각각의 요소에 대해 한번씩 순서대로 불러 그 함수의 반환 값으로 새로운 배열을 만듭니다. callback 함수는 (undefined도 포함해서) 배열 값이 들어있는 인덱스에 대해서만 호출됩니다. 즉, 값이 삭제되거나 아직 값이 할당/정의되지 않은 인덱스에 대해서는 호출되지 않습니다.
thisArg 매개변수가 map에 전달된 경우 callback 함수의 this값으로 사용됩니다. 그 외의 경우 undefined값이 this 값으로 사용됩니다. callback 함수에서 최종적으로 볼 수 있는 this 값은 함수 내 this를 정하는 일반적인 규칙에 따라 결정됩니다. map은 호출한 배열의 값을 변형하지 않습니다. 단, callback 함수에 의해서 변형될 수는 있습니다.
이 map 매서드를 사용하여 기존 값은 변경하지 않고 새로운 변수에 변경된 값을 사용할 수 있습니다. 자바스크립트의 데이터 불변성에도 아주 적합한 코드입니다.
let numbers = [1, 4, 9];
let doubles = numbers.map(function(num) {
return num * 2;
});
// numbers : [1, 4, 9] 변하지 않음.
// doubles : [2, 8, 18]
map 매서드는 배열뿐만 아니라 객채(Object)도 반환할 수 있습니다.
let kvArray = [{key:1, value:10},
{key:2, value:20},
{key:3, value: 30}];
let reformattedArray = kvArray.map(function(obj){
var rObj = {};
rObj[obj.key] = obj.value;
return rObj;
});
// reformattedArray는 [{1:10}, {2:20}, {3:30}]
// kvArray는 변하지 않음.
// [{key:1, value:10},
// {key:2, value:20},
// {key:3, value: 30}]
반응형
'IT > JavsScript' 카테고리의 다른 글
IntersectionObserver(인터섹션 옵저버) (0) | 2021.04.19 |
---|---|
filter 매서드 이해하기 (0) | 2021.03.31 |
구조분해 할당/전개(Sepread) 연산자 (0) | 2021.03.31 |
ES6 클래스(class) / 프로토 타입(Prototype) (0) | 2021.03.31 |
화살표 함수(arrow function) 이해하기 (0) | 2021.03.30 |
광고차단(애드블록)프로그램이나 브라우저를 사용중이시면 프로그램을 비활성화이나 블로그 주소를 예외 처리 해주시면 광고가 노출됩니다. 귀찮고 번거롭겠지만 광고 클릭은 저에게는 큰 힘이 됩니다. 🙇🏻♂️🙇🏻♀️
제 블로그의 모든 글은 제가 직접 작성 하고 다른 글을 참고할 때는 이전 글보다 읽기 편하게 수정해서 작성하고 있습니다. 커피 한잔 사먹고 더 열심히 좋은글로 보답하겠습니다.
오늘도 제 블로그에 와 주셔서 감사합니다. :)
제 블로그의 모든 글은 제가 직접 작성 하고 다른 글을 참고할 때는 이전 글보다 읽기 편하게 수정해서 작성하고 있습니다. 커피 한잔 사먹고 더 열심히 좋은글로 보답하겠습니다.
오늘도 제 블로그에 와 주셔서 감사합니다. :)