어레이 맵 설명

map() 배열의 메서드는 입력 배열의 모든 요소에 함수를 적용하여 새 배열을 생성합니다. 결과는 원래 입력 배열과 길이가 같은 새 배열입니다. map() 인수가 있는 콜백 함수를 사용합니다. 첫 번째 인수는 처리 중인 배열의 현재 요소입니다.
map()는 배열의 모든 요소에 대해 일부 작업을 수행해야 하는 상황에서 유용합니다. 모든 요소를 ​​두 배로 늘려야 할 수도 있습니다.

const arr = [2, 4, 9, 22];
const map = arr.map(x => x * 2);
console.log(map); // [ 4, 8, 18, 44 ]

맵을 사용하여 배열의 현재 인덱스에 액세스할 수도 있습니다. 콜백 함수는 인덱스에 대한 두 번째 인수를 취합니다.

const arr = [2, 4, 9, 22];
const map = arr.map((value, index) => value * index); // multiplying array value with its index
console.log(map); // [ 0, 4, 18, 66 ]

인덱스에 대한 액세스가 충분하지 않은 경우 세 번째 매개변수로 원래 배열에 대한 액세스 권한을 얻을 수도 있습니다.

map 메소드와 this 키워드


this 에서 map() 컨텍스트를 지정해야 하는 경우가 있습니다. this 전달은 map 에 대한 두 번째 매개변수로 지원됩니다.

const util = {
    firstName: "John",
    lastNames: ["Wick", "Malcolm", "Smith"],
    randomNameGenerator: function () {
        const newNames = this.lastNames.map(function (surname) {
            return (`${this.firstName} ${surname}`); // we can access first name provided by this object
        }, this); // passing reference to this object
        return newNames;
    }
}

console.log(util.randomNameGenerator()); // [ 'John Wick', 'John Malcolm', 'John Smith' ]

지도를 사용하지 말아야 할 때


  • 반환된 배열을 사용하지 않거나 콜백 함수에서 값을 반환하지 않을 경우 맵을 사용하지 마십시오. 입력 배열 자체를 업데이트하려면 forEach 또는 for..of를 사용하십시오.
  • 대부분의 경우 하나의 매개변수를 사용하지만 둘 이상의 매개변수를 사용할 수 있는 내장 메소드와 함께 사용하지 마십시오. 예를 들어 설명하겠습니다.

  • const arr = ["2", "4", "9"];
    const map = arr.map(parseInt);
    console.log(map);
    
    [2, 4, 9] 를 사용하기 때문에 답은 parseInt 이고 각 요소는 숫자로 예상할 수 있습니다. 출력이 [2, NaN, NaN] 라는 사실에 놀랄 것입니다. parseInt는 요소, 인덱스 및 배열의 ​​세 가지 매개변수를 사용한다는 점에 유의하십시오! 따라서 두 번째 및 세 번째 요소의 경우 인덱스는 1과 2가 되어 parseInt 에서 NaN이 생성됩니다.

    좋은 웹페이지 즐겨찾기