자바 스크립트 중복 제거

디렉토리

  1. 분석 중복 제거 같이 IndexOf
  2. 에 정렬 다시 정렬 한 후
  3. + 스플 라이스 중복 제거 +에 대한
  4. Array.form이 무게로 설정 + (ES6에 사용)
  5. ... 새로운 세트 (도착)]
  6. 특성은 동일한 개체를 사용할 수 없습니다
  7. 利用 감소 + 포함

1 대 루프 + 같이 IndexOf

1.1 배열 탐색 - 가장 직관적이고 가장 이해

새로운 배열 newArr, 편곡 통과를 만들기의 사용 같이 IndexOf는 현재의 숫자가 이미 거래 순회를 계속할가있는 경우, 같은 newArr을 넣어 존재하지 않는 새로운 배열에 존재하는지 여부를 결정합니다.

VAR의 도착 = 2, 8, 5, 0, 5, 2, 6, 7, 2 ]
   VAR newArr = []
    ( VAR I = 0; I <arr.length; 내가 ++ ) {
     경우 (newArr.indexOf (도착 [I]) === -1 ) { 
      newArr.push (도착 [I]) 
    } 
  } 
  CONSOLE.LOG (newArr) // 结果: 2, 8, 5, 0, 6, 7]

1.2 분석 배열 첨자

이 방법은 제 유사한 방법, 또는 용도이다 같이 IndexOf 차분 사용된다 같이 IndexOf에 나타나는 제 반환 위치.

VAR의 도착 = 2, 8, 5, 0, 5, 2, 6, 7, 2 ]
 VAR newArr = []
  ( VAR I = 0; I <arr.length; 내가 ++ ) {
     경우 (arr.indexOf (도착 [I]) === I) { 
        newArr.push (도착 [I]) 
    } 
} 
CONSOLE.LOG (newArr) // 结果: 2, 8, 5, 0, 6, 7]

비슷한 위에, 당신은 또한 사용할 수 있습니다 포함되어 있습니다 .

VAR의 ARR = 2 ,. 8 ,. 5 0 ,. 5, 2 ,. 6 ,. 7,2 ]
 VAR newArr = []
  ( var에 , I는 <arr.length, I = 0 I가 ++ ) {
     IF (newArr.includes! (ARR [I])) { // 검출기 배열 값을 갖는 경우가 포함 
        newArr.push (ARR [I]); 
    } 
} 
CONSOLE.LOG (newArr는) // 결과 : 2, 8, 5, 0, 6 7]

 

 

2, 정렬 분류 중복 제거

우리는 사용 된 정렬 순서를. 주문 후, 내부, 전후, 가까운 곳에 다른 newArr에 새 배열을 숫자를 중복.

VAR의 도착 = 2, 8, 5, 0, 5, 2, 6, 7, 2 ] 
arr.sort () 
VAR newArr = 도착 [0 ]
 에 대한 ( VAR I = 1; i가 <arr.length; 나는 ++ ) {
     경우 (도착 [I] == newArr [newArr.length - 1! ]) { 
        newArr.push ([I]) 도착 
    } 
} 
CONSOLE.LOG (newArr) // 结果: [0, 2, 5, 6 7, 8]

 

. 3에 대한 + +에 대한 스플 라이스 중복 제거

이중 중첩 루프 +에 대한 스플 라이스 중복을 삭제합니다.

VAR의 ARR = 2 ,. 8 ,. 5 0 ,. 5 ,. 6 ,. 7 2,2 ]
  ( VAR의 I = 0; I는 <arr.length; I는 ++ ) {
     위해 ( VAR의 J = I + 1]. J <ARR .length; J ++ ) {
         IF (ARR [I] == ARR [J]) { // 제, 접합 제에 상응하는 두 번째 방법 삭제 
            arr.splice를 (J ,. 1 ) 
            J - ; 
        } 
    } 
} 
CONSOLE.LOG (ARR) // 결과 : 2, 8, 5, 0, 6, 7]

 

. 4 Array.form + 설정은 무게 (ES6 사용)

ES6 방법, 적은 코드, 사용하기 쉽고, 객체를 인식하지 못하는 단점.

VAR의 도착 = 2, 8, 5, 0, 5, 2, 6, 7, 2 ] 
하자 newArr = Array.from ( 새로운 세트 (도착)) 
CONSOLE.LOG (newArr) // 结果: 2, 8, 5, 0, 6, 7]

 

5 ... 새로운 세트 (도착)]

단순화 4 방법.

VAR의 도착 = 2, 8, 5, 0, 5, 2, 6, 7, 2 ] 
newArr하자 = ... 새로운 세트 (도착)] 
CONSOLE.LOG (newArr) // 结果: [0, 2, 5, 6, 7, 8]

 

도 6은, 오브젝트의 속성을 이용하여 동일하지

 도착에 키가 키가 이미 존재하는지 여부를 판단하다 OBJ 객체 (OBJ)를 정의한다.

VAR의 ARR = 2 ,. 8 ,. 5 0 ,. 5 ,. 6 ,. 7 2,2 ]
 VAR newArr = [];
 VAR OBJ = {}
  ( VAR의 I = 0; I <arr.length; I는 ++ ) {
     IF {(! OBJ [도착 [I]]) // 키 도착 OBJ의 값 
        newArr.push (도착 [I]), 
        OBJ [도착 [I] = 1. 
    } 
} 
CONSOLE.LOG (newArr) // 결과 : 2, 8, 5, 0, 6, 7]

 7利用감소 + 포함

사용하십시오 줄일 누적를 원칙 + 포함에 대한 유사하다.

VAR의 도착 = 2, 8, 5, 0, 5, 2, 6, 7, 2 ]
 VAR newArr arr.reduce = ((PREV, 현재) => prev.includes (현재)? 이전 : ... 이전 ,똥개],[]); 
CONSOLE.LOG (newArr) // 结果: 2, 8, 5, 0, 6, 7]

 


참고

  1. JS 배열 중복 다섯 개 가지 방법
  2. 무거운에 자바 스크립트 배열 (방법 12 종류의 가장 완전한 역사)
  3. 두 가지 방법으로 중복 제거의 자바 스크립트 배열 -ES6
  4. ES6

 

추천

출처www.cnblogs.com/Nightsky-Dec/p/11374886.html