Home  >  Article  >  Web Front-end  >  Summary of three common methods to remove duplicates from js arrays_javascript skills

Summary of three common methods to remove duplicates from js arrays_javascript skills

WBOY
WBOYOriginal
2016-05-16 17:02:58990browse

The first is the more conventional method

Things:

1. Construct a new array to store the results

2. Each time in the for loop, one element is taken out from the original array, and this element is used to compare the loop with the result array

3. If the element does not exist in the result array, store it in the result array

Copy the code The code is as follows:

Array.prototype.unique1 = function(){
var res = [this[0]];
for(var i = 1; i < this.length; i ){
var repeat = false;
for(var j = 0; j < res.length; j ){
if(this[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(this[i]);
}
}
return res ;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', ​​'e', ​​1, 0]
alert(arr.unique1 ());

The second method is more efficient than the above method

Things:

1. Sort the original array first

2. Check whether the i-th element in the original array is the same as the last element in the result array. Because it has been sorted, duplicate elements will be in adjacent positions

3. If they are not the same, store the element in the result array

Copy the code The code is as follows:

Array.prototype.unique2 = function(){
this.sort(); //Sort first
var res = [this[0]];
for(var i = 1; i < this.length; i ){
if(this[i] !== res[res.length - 1]){
res.push(this[i]);
}
}
return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', ​​'e', ​​1, 0]
alert(arr.unique2());

The second method will also have certain limitations, because it is sorted before deduplication, so the final returned deduplication The results are also sorted. If it is required to remove duplicates without changing the order of the array, then this method is not advisable.

The third method (recommended)

Things:

1. Create a new array to store the results

2. Create an empty object

3. During the for loop, each time an element is taken out and compared with the object. If the element is not repeated, it is stored in the result array. At the same time, the content of this element is used as an attribute of the object and assigned a value of 1. , stored in the object created in step 2.

Explanation: As for how to compare, it is to take out one element from the original array each time, and then access this attribute in the object. If the value can be accessed, it means it is repeated.

Copy code The code is as follows:

Array.prototype.unique3 = function(){
var res = [];
var json = {};
for(var i = 0; i < this.length; i ){
if(!json[this[i]]) {
res.push(this[i]);
json[this[i]] = 1;
}
}
return res;
}

var arr = [112,112,34,'Hello',112,112,34,'Hello','str','str1'];
alert(arr.unique3());


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn