배열 중복 제거 / 정렬
Set
- Set객체는 중복을 제거한 값들의 집합이다.
- set을 사용해 중복제거 후 배열형태로 변환해줘야 정상적으로 데이터를 확인 할 수 있다.
- add : 중복된 값이 없을 경우 추가
- delete: 값 삭제
- has : 값 존재유무 확인
- clear : Set내부의 모든값 삭제
- size : 값의 수를 확인(length)
let set = new Set(); // set생성
------------------------------------------
const arrData = [1,2,3,1,2];
const set = new Set(arrData);
const uniqueArr = [...set]; // set객체를 배열형태로 저장해야 정상적으로 데이터가 출력됨.
console.log(uniqueArr)
// 1,2,3
// 오름차순 정렬
uniqueArr.sort(function(a,b) {
return a-b;
});
------------------------------------------
set.add(6);
// 1,2,3,6
set add(6) // 값이 존재하기 때문에 추가 안됨
// 1,2,3,6
set.delete(1)
// 2,3,6
set.has(6)
// true
set.clear();
// Set(0) {}
set.size;
// 0
forEach(), includes()
- forEach() : 배열을 순회하면서, 배열의 원소들로 주어진 callback함수를 실행
- includes() : 배열에 특정 값이 포함되는지 여부를 검사
const dupArr = [1, 2, 3, 1, 2];
let uniqueArr = [];
dupArr.forEach((element) => {
if (!uniqueArr.includes(element)) {
uniqueArr.push(element);
}
});
console.log(uniqueArr)
// 1,2,3
filter(), includes()
- filter() : 특정조건에 부합하는 배열의 모든값을 배열형태로 리턴
- includes() : 배열에 특정 값이 포함되는지 여부를 검사
// 비교대상 문자열 변환
let comparison = JSON.stringify(comparisonData)
// 중복 제거
let uniqueArr = []
uniqueArr = tempData.filter(obj=>{
return !comparison.includes(obj.name) || !comparison.includes(obj.phone);
})
if(uniqueArr.length < 1){
alert("중복");
return
}
indexOf(), filter()
- indexOf() : 특정값이 처음으로 나타나는 index를 리턴
- filter() : 특정조건에 부합하는 배열의 모든값을 배열형태로 리턴
// 중복 제거
uniqueArr(tempData) {
return tempData.filter((element, index) => tempData.indexOf(element) === index);
},
-------------------------------------------------------------------
let tempData = [1,2,3,1,2];
const uniqueArr = tempData.filter((element, index) => {
return tempData.indexOf(element) === index;
});
// 1,2,3