매번 중복 요소 관련 문제만 나오면 헷갈린다.
그래서 정리해서 블로그에 올린다.
더이상 헷갈리지 말기!!
배열 중복 요소 제거하기
filter사용법
arr.filter(callback(element[, index[, array]])[, thisArg])
[매개변수]
* callback : 각 요소를 시험할 함수. true를 반환하면 요소를 유지하고, false를 반환하면 버린다.
다음 세 가지 매개변수를 받는다.
* element : 처리할 현재 요소.
* index (Optional) : 처리할 현재 요소의 인덱스.
* array (Optional) : filter를 호출한 배열.
* thisArg (Optional) : callback을 실행할 때 this로 사용하는 값.
[반환 값]
테스트를 통과한 요소로 이루어진 새로운 배열. 어떤 요소도 테스트를 통과하지 못했으면 빈 배열을 반환한다.
--------------------------------------------ㅁ
var tmp = ["1", "2", "3", "2", "1"] ; // temp 배열
tmp.filter(function(item, index, self) {
return self.indexOf(item) == index;
/* 현재 처리하는 요소의 인덱스 넘버와 현재 처리할 요소의 인덱스 넘버가 같으면 true로 살아남고,
false면 버려지는건데,indexOf(item) 에 "2"와 같이 item에 들어오면
자연스레 1번째의 2로 인식이 되어
다시 인덱스 넘버는 1이 된다. 따라서 중복되는 3번째의 '2'는 false가 되어 버려진다.
4번째의 '1'도 마찬가지!!!!!!!
*/
})
// -> ["1", "2", "3"]
potter