javascript 배열 재 활용 방법 인 스 턴 스 분석
배열 에서 중복 치 를 제거 하 는 것 은 면접 에서 자주 보 는 내용 이자 쉽게 사용 할 수 있 는 기교 입 니 다.다음은 몇 가지 무 거 운 방법 에 대해 소개 하 겠 습 니 다.
먼저 가장 흔히 볼 수 있 는 방법 이다.즉,임시 배열 을 추가 하고 원래 의 배열 을 옮 겨 다 니 며 임시 배열 에 가입 하 는 것 이다.가입 할 때마다 가입 해 야 할 요소 가 임시 배열 에 존재 하 는 지 여 부 를 판단 하 는 것 이다.코드 는 다음 과 같다.
// , ,
// , ,
function uniqArray1(arr) {
var n=[];
for(var i=0;i<arr.length;i++){
// , ,
if(n.indexOf(arr[i])==-1){
n.push(arr[i]);
}
}
return n;
}
그렇다면 더 좋 은 방법 은 없 을 까?해시 표 의 사상 을 사용 할 수 있 습 니 다.자바 스 크 립 트 에서 대상 의 검색 은 배열 아래 표 시 된 검색 보다 훨씬 빠 릅 니 다.그래서 우 리 는 임시 배열 에 추 가 된 요 소 를 저장 하 는 대상 을 만 들 수 있 습 니 다.그러면 새로운 요 소 를 추가 할 때마다 대상 을 찾 아 중복 여 부 를 판단 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.
// ,
function uniqArray2(arr){
var n={},//
r=[];//
for(var i=0;i<arr.length;i++){
if(n[arr[i]]==null){// , ,
n[arr[i]]=true;
r.push(arr[i]);
}
}
return r;
}
또 하나의 방법 은 속도 가 해시 표 보다 빠 르 지 는 않 지만 가장 기본 적 인 index Of 보다 빠르다.사상 은 먼저 정렬 함수 sort 를 거 친 다음 에 인접 한 요 소 를 비교 하고 다른 것 은 임시 배열 에 추가 하 는 것 이다.코드 는 다음 과 같 습 니 다:
// , ,
function uniqArray3(arr){
arr.sort();
var r=[arr[0]];
for(var i=1;i<arr.length;i++){
if(arr[i]!=r[r.length-1]){// ,
r.push(arr[i]);
}
}
return r;
}
마지막 실험 코드 는 다음 과 같다.
//
var arr=[2,3,4,2,4,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3];
for(var i=0;i<10000000;i++){// ,
arr.push(3);
}
var time1=Date.now();
var n1=uniqArray1(arr);
var time2=Date.now();
console.log(n1);//2,3,4,5
console.log(time2-time1);//218
time1=Date.now();
var n2=uniqArray2(arr);
time2=Date.now();
console.log(n2);//2,3,4,5
console.log(time2-time1);//63, indexOf
time1=Date.now();
var n3=uniqArray3(arr);
time2=Date.now();
console.log(n3);//2,3,4,5
console.log(time2-time1);//203, sort , indexOf ,
해시 알고리즘 의 속도 가 가장 빠 른 것 을 볼 수 있다.PS:여기 서 몇 가지 중복 도 구 를 제공 하여 참고 하여 사용 할 수 있 습 니 다.
온라인 중복 제거 도구:
http://tools.jb51.net/code/quchong
온라인 텍스트 중복 도구:
http://tools.jb51.net/aideddesign/txt_quchong
자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.