>  기사  >  웹 프론트엔드  >  JavaScript 배열 중복 제거 알고리즘 예

JavaScript 배열 중복 제거 알고리즘 예

一个新手
一个新手원래의
2018-05-23 14:56:382449검색

이 글에서는 주로 JavaScript 배열 중복 제거 알고리즘을 소개하고, JavaScript 배열 중복 제거와 관련된 읽기, 쓰기, 순회, 비교, 정렬 및 기타 작업과 알고리즘 개선과 관련된 구현 기술을 예제 형식으로 요약하고 분석합니다. 참고하시면 됩니다

이 글은 자바스크립트 배열 중복 제거 알고리즘을 예시로 요약한 것입니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

테스트 사례: arr = ["1",3,"1",1,4,5,1,"2",5,1,{" name":" li","age":20},2,4,3,{"name":"li","age":20},""];

방법 1: 다음의 도움으로 임시 배열 및 indexOf, 알고리즘 복잡도는 다음과 같습니다.O(n^2)

function unique1(arr){
  var temp = [];
  for(var i=0; i<arr.length; i++){
    if(temp.indexOf(arr[i]) == -1){
      temp.push(arr[i]);
    }
  }
  return temp;
}

테스트 결과: Unique1(arr): ["1", 3, 1, 4, 5, "2", Object { name ="li", age =20}, 2, Object { name="li", age=20}, ""]

bug 개체를 구별할 수 없습니다

방법 2: JavaScript의 개체 개체를 해시로 사용 table

function unique2(arr){
  var temp=[];
  var hash={};
  for(var i=0; i<arr.length;i++){
    if(!hash[arr[i]]){
      hash[arr[i]]=true;
      temp.push(arr[i]);
    }
  }
  return temp;
}

테스트 결과: Unique2(arr): ["1", 3, 4, 5, "2", Object { name="li", age=20}, ""]

bug: 불가능 구별: 1과 "1"

Modify

function unique2(arr){
  var temp=[];
  var hash={};
  for(var i=0; i<arr.length;i++){
      var item = arr[i];
    var key = typeof(item)+item;
    if(!hash[key]){
      hash[key]=true;
      temp.push(arr[i]);
    }
  }
  return temp;
}

테스트 결과: Unique2(arr): ["1", 3, 1, 4, 5, "2", Object { name="li", age=20} , 2, ""]

방법 3: 먼저 sort를 사용하여 배열을 정렬한 다음 임시 배열을 사용하여 동일한 요소의 마지막 요소를 저장합니다. 이 방법은 순수 숫자 유형 배열에만 사용할 수 있습니다.

function unique3(arr){
  arr.sort(function(a,b){
    return a-b;
  });
  var temp = [];
  for(var i=0;i<arr.length;i++){
    if(arr[i] !== arr[i+1]){
      temp.push(arr[i]);
    }
  }
  return temp;
}

위 내용은 모두를 위해 정리한 내용입니다. 앞으로도 잘 활용되길 바랍니다. 모두에게 도움이 됩니다.

관련 기사:

Ajax 전송 JSON 예제 코드

ajax는 json을 사용하여 데이터 전송을 구현합니다.

중복 구현을 위한 Ajax 확인 코드

위 내용은 JavaScript 배열 중복 제거 알고리즘 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.