-
[JavaScript]중복 제거(feat. Set의 한계)개발/Javascript 2022. 6. 21. 17:20
다음 배열 안에 있는 두 객체는 사실상 같다고 볼 수 있습니다.
const array = [ { name: "kim", age: 33, }, { age: 33, name: "kim", }, ];
프로퍼티의 순서만 다를 뿐이지 프로퍼티의 이름과 데이터가 같기 때문입니다.
Set을 이용한 중복 제거가 되지 않습니다.
const array = [ { name: "kim", age: 33, }, { age: 33, name: "kim", }, ]; console.log(new Set(array)); // Set(2) { { name: 'kim', age: 33 }, { age: 33, name: 'kim' } }
배열의 findIndex 함수는 판별함수를 만족하는 배열의 첫 번째 요소에 대한 인덱스를 반환합니다.
이 특징을 활용하면 프로퍼티 순서가 달라도 실질적으로 같은 데이터의 중복 제거를 할 수 있습니다.
const array = [ { name: "kim", age: 33, }, { age: 33, name: "kim", }, ]; const newArry = array.filter( (value, index, self) => index === self.findIndex((e) => value.name == e.name && value.age === e.age) ); console.log(newArry); // [ { name: 'kim', age: 33 } ]
'개발 > Javascript' 카테고리의 다른 글
[NPM] Sementic Versioning (0) 2022.06.26 [RegExp] $1 (0) 2022.06.26 [VScode] 익스텐션으로 Prettier 설정하기 (0) 2022.05.31 [JavaScript] "Illegal invocation" errors (0) 2022.05.31 Response.json() (0) 2022.05.06