JavaScript의 Array를 공부하던 중, 배열에 중복된 값이 들어가있는 경우 중복된 값들을 제거하는 방법에 대해 고민하게 됐다.
구글링을 통해 답은 쉽게 찾아냈지만, 그 과정을 좀 더 자세하게 기술해보고자 한다.
let numbers = [1, 2, 2, 3, 1, 4, 5, 1];
numbers.filter((element, index, array) {
return array.indexOf(element) === index;
})
배열 numbers
에는 중복된 요소들이 있는데 이를 filter
함수를 이용해 걸러낼 수 있다.
그 방법은 다음과 같다.
각각의 요소는 자신만의 index를 가지고 있는데, 어떠한 요소가 다른 index 자리에 중복되게 등장하면 해당 요소를 걸러주는 것이다.
위 문장을 다음과 같은 코드로 작성할 수 있다.
numbers.filter((element, index, array) {
return array.indexOf(element) === index;
})
위에서 볼 수 있듯이 배열 numbers
에서는 숫자 1이 4번째와 7번째 인덱스에 다시 나타났고, 숫자 2가 2번째 인덱스에 다시 나타났다.
따라서, numbers.indexOf(1)
의 결과값인 0을 제외한 4번째, 7번째 인덱스에 등장하는 숫자 1은 걸러지게 되는 것이다.
또한 numbers.indexOf(2)
의 결과값인 1을 제외한 2번째 인덱스에 등장하는 숫자 2는 걸러지게 된다.
세 줄밖에 되지 않는 짧은 코드이지만 그 의미를 이해하기가 쉽지만은 않았다. 머릿속으로는 이해가 됐다고 생각한 것들도 다시 블로그에 자세히 기술해보며 더 확실하게! 충분히! 이해할 수 있도록 해야겠다.