첫 번째는보다 전통적인 방법입니다
아이디어:
1. 새로운 배열 저장 결과를 구축하십시오
2. For Cycle의 원래 배열에서 요소를 가져 가서이 요소의 결과와 함께이 요소 사이클과 어레이와 비교하십시오.
3. 결과 배열에 그러한 요소가 없으면 배열에 저장됩니다.
다음과 같이 코드 코드를 복사하십시오.
Array.prototype.unique1 = function () {
var res = [this [0]];
for (var i = 1; i <this.length; i ++) {
var 반복 = 거짓;
for (var j = 0; j <res.length; j ++) {
if (this [i] == res [j]) {
반복 = true;
부서지다;
}
}
if (! 반복) {
res.push (이 [i]);
}
}
리턴 레스;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
경고 (arr.unique1 ());
두 번째 방법은 위의 방법보다 효율적입니다.
아이디어:
1. 원래 배열을 먼저 정렬하십시오
2. 원래 배열의 첫 번째 요소가 결과 배열의 마지막 요소와 동일한 지 확인하십시오. 반복 요소는 인접한 위치에 있습니다.
3. 다른 경우 요소를 결과 배열에 저장합니다.
다음과 같이 코드 코드를 복사하십시오.
Array.prototype.unique2 = function () {
this.sort (); // 먼저 정렬됩니다
var res = [this [0]];
for (var i = 1; i <this.length; i ++) {
if (this [i]! == res.length -1]) {
res.push (이 [i]);
}
}
리턴 레스;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
경고 (arr.unique2 ());
두 번째 방법은 또한 반환 전 정렬, 마지막 반환의 마지막 반환 결과도 정렬되기 때문에 특정 제한 사항이 있습니다. 배열의 순서가 순서를 변경하지 않아야하는 경우이 방법을 취할 수 없습니다.
세 번째 방법 (권장)
아이디어:
1. 새 배열 저장 결과를 만듭니다
2. 빈 개체를 만듭니다
3. For Cycle은 요소를 꺼내서이 요소를 반복하지 않으면 2 단계에서 설정된 객체에 저장됩니다.
참고 : 비교하는 방법은 원래 배열에서 요소를 가져간 다음 값에 액세스 할 수 있다면이 속성에 액세스하십시오.
다음과 같이 코드 코드를 복사하십시오.
Array.prototype.unique3 = function () {
var res = [];
var json = {};
for (var i = 0; i <this.length; i ++) {
if (! json [this [i]]) {
res.push (이 [i]);
JSON [this [i]] = 1;
}
}
리턴 레스;
}
var arr = [112,112,34, 'hello', 112,112,34, 'hello', 'str', 'str1'];
경고 (arr.unique3 ());