[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 |
반응형
'Program > JavaScript' 카테고리의 다른 글
[jQuery] JSON JSONP 차이점 (0) | 2019.09.17 |
---|---|
[jQuery] Table 셀 병합 ( colspan / rowspan ) 하는법 (0) | 2019.06.27 |
[jquery] 마우스 클릭시 화면이 나오는 툴팁(Tooltip) (0) | 2019.02.27 |
[JS] ie 11에서 windowopen 시 과거버전으로 나오는현상 (0) | 2019.02.15 |
[Jquery/JS] TEXTAREA 자동 높이 조절_커서위치_엔터 (0) | 2019.01.13 |