javascript 중복 제거

louis220·2022년 2월 9일
0

배열에서 중복제거

필터(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: '포도'}]
profile
기록을 하자

0개의 댓글