[JS] 중복 배열 제거 후 유니크값 가져오기

2019. 3. 22. 17:53
반응형




[JS] 중복 배열 제거 후 유니크값 가져오기



배열 요소 중에 중복되는 값을 제거하고 배열을 구하는 방법은 개인마다 다를수 있겠지만

Stackoverflow 에서 공유되고있는 몇가지 방법이 정리된 글이 있어 공유하고자 합니다.




jQuery를 사용한 빠르고 직접적인방법


http://api.jquery.com/jquery.unique/


 jQuery 내장 로직을 이용하는 방법으로 퍼모먼스 저하가 없다면 직접 짜는것보다 편리함.


1
2
3
4
5
6
7
8
 
var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
var uniqueNames = [];
 
$.each(names, function(i, el){
    if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});
 
cs






기존 순서는 그대로 두고 중복된것만 제거하는법


indexOf로 중복여부를 체크해서 새로운값만 추가하는법 약간 무겁긴하지만 깔끔한 로직생성가능


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
 
var uniq = names.reduce(function(a,b){
    if (a.indexOf(b) < 0 ) a.push(b);
    return a;
  },[]);
 
console.log(uniq, names) // [ 'Mike', 'Matt', 'Nancy', 'Adam', 'Jenny', 'Carl' ]
 
// 한 줄로 표현
return names.reduce(function(a,b){if(a.indexOf(b)<0)a.push(b);return a;},[]);
 
 
 
cs




순서 재정렬과 함께 중복된 요소를 제거하는 법


먼져 slice로 복사본을 만든뒤 정렬하고 바로 앞값과 비교하는방법


1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
var uniq = names.slice() // 정렬하기 전에 복사본을 만든다.
.sort(function(a,b){
    return a - b;
})
.reduce(function(a,b){
    if (a.slice(-1)[0!== b) a.push(b); // slice(-1)[0] 을 통해 마지막 아이템을 가져온다.
    return a;
},[]); //a가 시작될 때를 위한 비어있는 배열
 
// 한 줄로 표현
return names.slice().sort(function(a,b){return a - b}).reduce(function(a,b){if (a.slice(-1)[0!== b) a.push(b);return a;},[]);
 
 
cs






※ 참조 : https://programmingsummaries.tistory.com/

반응형

BELATED ARTICLES

more