JavaScript 는 배열 의 중복 요 소 를 제거 합 니 다.

1636 단어 배열반복 요소
프로그램 을 작성 하 는 과정 에서 배열 의 중복 요 소 를 제거 하 는 수요 가 자주 발생 합 니 다.이 기능 을 실현 하 는 것 은 사실 결코 어렵 지 않다.우 리 는 하나의 이중 순환 으로 실현 할 수 있 는데,작은 배열 에 대해 서 는 당연히 이렇게 하 는 것 이 타당 하지 않다.그러나 우리 의 배열 이 비교적 크다 면 안의 요 소 는 수만 개가 있다.그렇다면 이중 순환 으로 효율 이 매우 낮다.다음은 js 의 특성 으로 배열 의 중복 요 소 를 효과적으로 제거 하 는 방법 을 만 듭 니 다
 
<script>
function unique(data){
data = data || [];
var a = {};
for (var i=0; i<data.length; i++) {
var v = data[i];
if (typeof(a[v]) == 'undefined'){
a[v] = 1;
}
};
data.length=0;
for (var i in a){
data[data.length] = i;
}
return data;
}
function test(){
var arr = [9,1,3,8,7,7,6,6,5,7,8,8,7,4,3,1];
var arr1 = unique(arr);
alert(arr1.join(","));
}
test();
</script>
출력 결과:9,1,3,8,7,6,5,4 js 배열 의 무 게 를 제거 하 는 것 은 배열 에서 중복 되 는 요 소 를 제거 하 는 것 이다.45677913.그러나 여기 for 순환 에 다른 for 순환 이 내장 되 어 있 는 것 이 분명 하 다.빅 데이터 양 에서 시간 이 많이 걸 릴 것 이다!효율 저하!검색 과 높 은 사람의 지 시 를 통 해 새로운 방법 을 최적화 시 켰 습 니 다
 
Array.prototype.delRepeat=function(){
var newArray=new Array();
var len=this.length;
for (var i=0;i<len ;i++){
for(var j=i+1;j<len;j++){
if(this[i]===this[j]){
j=++i;
}
}
newArray.push(this[i]);
}
return newArray;
}
임시 provisional Table 대상 을 사용 하여 배열 의 값 을 provisional Table 대상 의 키 값 으로 하고 해당 값 이 존재 하지 않 으 면 이 배열 의 값 push 를 새 배열 로 합 니 다.효율 은 높 아 졌 지만 bug 는 배열 에서 변환 가능 한 숫자 와 문자열 을 바 꾸 는 것 을 가정 하 는 것 입 니 다.예 를 들 어 배열[6,6]은 이때 하 나 를 제거 할 수 있 습 니 다.비극,동시에 해결 방법 을 구하 다.

좋은 웹페이지 즐겨찾기