너무 자주 쓰는데 너무 자주 찾아 보는거같아서 포스팅을 해놓고 보면 좀 나을거라 생각되서 포스팅을 합니다.


map,forEach 대해서 포스팅합니다.


함수 전부 Array.prototype 인것으로 보아 배열의 메서드로 보여집니다.


우선 map 부터 보자면



1. map 


Array.prototype.map()

var new_array = arr.map(function callback(currentValue[,index[,array]]) { // new_array 새 요소 반환} [thisArg]) 라고 되어있습니다.  mdn 참조


currentValue : 배열의 요소중 , 현재 처리되고있는 요소 


index  : 현재 처리되는 요소의 배열 내 인덱스


array : 메소드가 적용되는 본래 배열







반환 : 실행한 함수의 결과를 모은 새로운 배열 


** 새로운 배열을 만들어서 반환하기 떄문에 기존의 arr (원본) 배열은 그대로있음을 확인할수 있습니다.

또한 반복 중에 기존의 값에 새로운 값들을 추가해서 반환하여도 원본의 배열은 그대로임을  알수 있습니다.



2. forEach


Array.prototype.forEach();


forEach 의 파라미터 역시 위의 map과 동일합니다.


차이점은




반환 : undefined 반환값이 존재하지 않습니다.



또한 사용상의 주의점 ( js 의 주의) 이라고 할수 있는 점이 하나있습니다. 위에서는 원본 배열을 수정하여도 수정이 되지않는 점이 확인되었는데요


객체의 배열 형태면 이야기가 다릅니다.


forEach 에서 수정된 부분들이 forEachTest로 변경되었습니다.


그리고 그아래에 map으로도 다시 수정하게 되면



기존에 수정하였던 forEach 까지 수정되게 되는 현상이 발생합니다.


이런 현상은 js의 참조 현상 때문인데요 객체를 수정하실때는 매우 유의하여야 합니다.


이부분에 대해서는 따로정리 하였습니다.

// JavaScript 객체 참조 

http://ipex.tistory.com/entry/JavaScript-%EA%B0%9D%EC%B2%B4-%EC%9D%98-%EC%B0%B8%EC%A1%B0





개인적으로 자주 사용하는 메서드들 로는

fill() : 특정값으로 채움

filter() : 특정 조건에 맞는 배열 반환

includes() : 해당 값이 포함된지 확인

push() ,pop(), shift(),unshift(),reduceRight(),reverse(),slice(),sort(),splice(),reudce() 등등이 있습니다.



+ Recent posts