홍열 2021. 9. 26. 13:19
728x90

Java script 내장함수 map 

파라미터로 전달된 함수를 사용해서 배열 내 각 요소를 원하는 규칙에 따라 변환한 후 결과 반환

 

array.map(callback, [thisArg])

기본형은 함수를 넘겨서 작업하는 방법

var numbers = [1,2,3,4,5]

var processed = numbers.map(function(num){
					return num*num
                    });
console.log(processed)

화살표 함수를 이용할 수도 있다.

var numbers = [1,2,3,4,5]

var processed = numbers.map(num=>num*num)
console.log(processed)

 

결국 map을 어떻게 컴포넌트에 적용하느냐는 다음 예제를 보자

li를 만들어서 저장해두고 ul에 넣자.

import React from 'react'

const IterationSample = () => {
	const names = ["a", "b", "c", "d"]
    const nameList = names.map(name => <li>{name}</li>);
    return <ul>{nameList}</ul>

map을 사용할때는 항상 key를 넣어줘야한다. 런타임시에 오류가 나는 것은 아니지만, 로그에 오류가남는다. 

위의 예제에서는 map에서 반환하는 index를 키로 넣어주면 되겠다.

import React from 'react'

const IterationSample = () => {
	const names = ["a", "b", "c", "d"]
    const nameList = names.map( (name, index) => <li key={index}>{name}</li>);
    return <ul>{nameList}</ul>

 

index는 어디서 온걸까..

맨 처음에 map을 사용할때는 callback함수가 온다고 했다. 

이때 callback함수안에는 총 3가지 요소가 들어있다.

array.map(callback, [thisArg])
* callback : 새로운 배열 요소를 생성하는 함수로 파라미터는 3가지
1) currentValue : 현재 처리하고 있는 요소
2) index : 현재 처리하고 있는 요소의 index값
3) array : 현재 처리하고 있는 원본 배열

thisArgs: callback함수 내에서 사용할 this 레퍼런스