본문 바로가기

javascript

자바스크립트 map() 함수

.map() 함수

 

const list = [1,2,3];

const multipledList = list.map(item => item*10);
multipledList.forEach(item => console.log(item));

👉 line 3 : list에 있는 모든 요소에 파라미터로 받은 함수인 *10을 한 결과를 [ ] 형태로 담습니다.

👉 line 4 : multipledList의 각 요소를 foEach문을 활용하여 각각 출력합니다.

결과

.map() 함수는 배열(array)에 있는 모든 item에  .map()의 파라미터로 받은 함수를 적용시킨 배열(array)을 리턴합니다.

 

map() 함수는 다음과 같이 사용할 수 있습니다.

.map(item => item*10);

map()에 파라미터로 전달된 item => item*10은 값을 item이라는이름으로 받아 10을 곱한 함수입니다. map 함수는 list라는 배열의 값을 하나씩 뽑아서 item으로 전달하고, 10,20,30을 각각 생성하여 배열의 형태로 리턴하게 됩니다.

 

빅데이터와 함께 나오는 말인 맵리듀스(map reduce)에서 그 맵(map)입니다.

 

맵리듀스 프로그래밍 모델은 대용량 데이터를 분산 처리하기 위해 임의의 순서로 정렬된 데이터를 분산처리(map)하고 이를 다시 합치는(reduce) 과정을 거칩니다.

 

간단히 얘기해서 데이터를 쪼개고 계산한 후 다시 합치는 것입니다. 만약 데이터의 크기가 매우 크거나, 계산 과정이 복잡하다면 프로그램에서 큰 단위의 데이터에 대해 순차적으로 계산하기 때문에 그 처리 과정이 느려집니다. 그래서 이를 여러 프로세스에 나누어 위와 같이 처리한다면 처리지연(latency)을 줄이고 처리량(throughput)을 늘릴수 있습니다. 


map() 함수 예제

3명의 직원들의 연봉을 10%씩 올려준 값을 배열로 뽑아서 raisedSalaryList에 담아주는 map() 연산입니다.

const listEmployee = [
  {name : "kangAgee", age: 30, salary: 4000 },
  {name : "koyangee", age: 31, salary: 5000 },
  {name : "tokki",    age: 32, salary: 6000 },
];

const raisedSalaryList = listEmployee.map(employee => (employee.salary*1.1));
raisedSalaryList.forEach(salary => console.log("salary : %d", salary));

결과

map()은 원본리스트의 처음 인덱스트부터 마지막 인덱스까지 순회하며 현재 인덱스의 아이템 데이터를 가공할 수 있습니다. 

728x90
300x250