2010-09-13 43 views
2

如何在數組中找到重複項並使用javascript刪除它們?查找數組中的重複項,並使用javascript將它們刪除

+0

將在數組中什麼類型的變量?只有字符串? – 2010-09-13 10:52:09

+0

抱歉沒有具體,我在想字符串和整數數組。 – manraj82 2010-09-13 10:55:15

+0

[unique()for javascript中數組的重複](http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript) – 2010-09-13 11:16:57

回答

3

要做到這一點,一般來說,你可以使用類似於下面的東西,這將從數組中刪除重複。如果你有一個只包含字符串或數字的數組,你可以顯着簡化它。

var arrayContains = Array.prototype.indexOf ? 
    function(arr, val) { 
     return arr.indexOf(val) > -1; 
    } : 

    function(arr, val) { 
     var i = arr.length; 
     while (i--) { 
      if (arr[i] === val) { 
       return true; 
      } 
     } 
     return false; 
    } 

function removeDuplicates(arr, equals) { 
    var val, originalArr = arr.slice(0); 
    arr.length = 0; 

    for (var i = 0, len = originalArr.length; i < len; ++i) { 
     val = originalArr[i]; 
     if (!arrayContains(arr, val)) { 
      arr.push(val); 
     } 
    } 

    return arr; 
} 

var arr = [1, 2, 2, 1, 3]; 
removeDuplicates(arr); 
console.log(arr); // [1, 2, 3] 
1
var sampleArr=new Array(1,1,1,1,1,2,2,3,3,3,4,4,4); //Declare array 
document.write(uniqueArr(sampleArr)); //Print the unique value 

//Adds new uniqueArr values to temp array 
function uniqueArr(a) { 
temp = new Array(); 
for(i=0;i<a.length;i++){ 
    if(!contains(temp, a[i])){ 
    temp.length+=1; 
    temp[temp.length-1]=a[i]; 
    } 
} 
return temp; 
} 

//Will check for the Uniqueness 
function contains(a, e) { 
for(j=0;j<a.length;j++)if(a[j]==e)return true; 
return false; 
} 
0
for(var i=0; i < arr.length; i++) 
{ 
    for(var j=i+1; j < arr.length; j++) 
    { 
     if(arr[j] == arr[i]) 
     { 
      arr.splice(j, 1); 
     } 
    } 
}