This time I will show you how to implement the JS array deduplication algorithm and what are the precautions for implementing the JS array deduplication algorithm. The following is a practical case, let's take a look.
Test case:arr = ["1",3,"1",1,4,5,1,"2",5,1,{"name ":"li","age":20},2,4,3,{"name":"li","age":20},""];
Method 1: With the help of temporary array and indexOf, The algorithm complexity is: 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 Unable to distinguish objects
Method 2: Use Object object in JavaScript as Ha Greek 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: Unable to distinguish: 1 and "1"Modification
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, ""]
Method 3: First use sort to sort the array, and then use a temporary array to store the last one of the same element. This method can only be used for pure Number type arrays
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; }
How to operate Angular to implement data requests
How to operate node and use async to control concurrency
The above is the detailed content of How to implement JS array deduplication algorithm. For more information, please follow other related articles on the PHP Chinese website!