일을 하다보면 배열에 유니크한 값만 남기고 싶을 때가 있다.
그 때 제가 쓰는 방법을 알려드리겠습니다.
const arr = [2,1,5,1,6,5,2,3];
// 1. Set
// new Set([iterable])
// Set 객체는 컬렉션으로, 삽입 순서대로 요소를 순회할 수 있다.
// 그리고 Set 내의 값은 한 번만 나타낼 수 있다. 즉, Set 내의 값은 유일하다.
// 단, 배열 내의 참조 값은 적용X
const set = Array.from(new Set(arr)); // [2, 1, 5, 6, 3]
// 2. reduce
// Array.includes(value) : value가 Array배열에 존재하는지 판단해 true, false를 반환합니다.
arr.reduce((acc,curr) => acc.includes(curr) ? acc : [...acc,curr],[]);
// [2, 1, 5, 6, 3]
// ES6를 사용 못 할 때
// 1. reduce, indexOf
arr.reduce(function(acc,curr,index){
acc.indexOf(curr) > -1 ? acc : acc.push(curr);
return acc;
},[]); // [2, 1, 5, 6, 3]
// 2. filter, indexOf
arr.filter(function(a, i, self){
return self.indexOf(a) === i;
}); // [2, 1, 5, 6, 3]