JavaScript 배열에서 중복 항목을 제거하는 여러 방법의 효율성 테스트

高洛峰
풀어 주다: 2016-12-09 13:02:45
원래의
1299명이 탐색했습니다.

다음은 인터넷상의 세 가지 고효율 방법에 대한 요약 및 효율성 테스트입니다. 더 나은 의견이나 제안이 있으면 제안하여 함께 배울 수도 있습니다.

어레이 중복 제거 방법 1:

Array.prototype.unique1 = function(){
 console.time("数组去重法1");   //记录开始执行的时间
 var arr = [];    //创建一个临时数组
 var obj = {};   //创建一个空对象
 for(var i = 0; i < this.length; i++){   //遍历当前要去重的数组
  if(!obj[this[i]]){   //判断obj对象中是否存有当前项,没有则执行
   arr.push(this[i]);   //将当前项push到临时数组中
   obj[this[i]] = 1;   //将当前项存入obj对象
  }
 }
 console.timeEnd("数组去重法1");   //记录结束执行的时间
 return arr;
}
로그인 후 복사


어레이 중복 제거 방법 2:

Array.prototype.unique2 = function(){
 console.time("数组去重法2"); //记录开始执行的时间
 var arr = [];  //创建一个临时数组
 for(var i = 0; i < this.length; i++){  //遍历当前要去重的数组
  if(arr.indexOf(this[i]) == -1){  //判断临时数组中是否存有当前项,没有则执行
   arr.push(this[i]); //将当前项push到临时数组中
  }
 }
 console.timeEnd("数组去重法2"); //记录结束执行的时间
 return arr;
}
로그인 후 복사


어레이 중복 제거 방법 3:

Array.prototype.unique3 = function(){
 console.time("数组去重法3"); //记录开始执行的时间
 var arr = [this[0]]; //创建一个临时数组,并将要去重数组的第一项存入临时数组
 for(var i = 1; i < this.length; i++) { //从要去重数组第二项开始遍历
  if (this.indexOf(this[i]) == i){ //判断临时数组中是否存有当前项,没有则执行
   arr.push(this[i]); //将当前项push到临时数组中
  }
 }
 console.timeEnd("数组去重法3"); //记录结束执行的时间
 return arr;
}
로그인 후 복사


효율성 테스트 방법:

var arr1 = []; //创建一个要去重的数组
for(var i = 0; i < 200000; i++){ //遍历200000个数据
 arr1.push(parseInt(Math.random() * 10) + 1); //将所有数据返回为随机数(1-10之间)的数, 并push到要去重的数组中
}
 
console.log(arr1.unique1()); //打印数组去重法1的执行时间
console.log(arr1.unique2()); //打印数组去重法2的执行时间
console.log(arr1.unique3()); //打印数组去重法3的执行时间
로그인 후 복사


효율성 테스트 결과:

JavaScript 배열에서 중복 항목을 제거하는 여러 방법의 효율성 테스트

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿