배열에서 중복제거
필터(filter)
const arr = ['사과', '배', '포도', '바나나', '배'];
const filteredArr = arr.filter((val, idx) => {
return arr.indexOf(val) === idx; // val의 인덱스가 현재의 인덱스와 같다면 포함
});
// filteredArr === ['사과', '포도', '바나나'];
맵(Map)
const arr = ['사과', '배', '포도', '바나나', '배'];
const filterdObj = {};
arr.forEach(val => {
filteredObj[val] = true; // 사과: true, 포도: true, 바나나: true
});
const filteredArr = Object.keys(filteredObj); // 객체의 키만 모아서 배열로 반환
// filteredArr === ['사과', '포도', '바나나'];
셋(Set)과 확산 연산자
- Set 객체는 Map 객체에서 값이 없고 키만 있다고 이해하면 된다.
배열을 인자로 받아서 중복 없는 객체를 반환한다.
const arr = ['사과', '배', '포도', '바나나', '배'];
const filtetedArr = [...new Set(arr)];
// filteredArr === ['사과', '포도', '바나나'];
객체배열에서 중복 제거
필터(filter)
const object = [{name:'사과'},{name: '배'},{name: '포도'}, {name: '배'}]
const filtetedObject = object.filter((val, idx, arr) => {
return arr.findIndex((arrVal) => arrVal.name === val.name) === idx
});
// filteredObject === [{name:'사과'},{name:'배'},{name: '포도'}]