首页 > 代码库 > 数组排重

数组排重

1   function pass(arr){2       var result=arr.filter(function(item,i){3          return arr.indexOf(item)==i;4       })5    return result;6   }7  console.log(pass([0,1,2,1,3,5,2,2,2,‘2‘,‘5‘]));//结果[0, 1, 2, 3, 5, "2", "5"] 

利用数组的indexOf方法的特点,indexOf只要找到要查找项的索引后就会结束返回索引值,如果有两个相同的项,也只会返回第一项的索引。

所以,arr.indexOf(item)在对第二个出现的项执行时返回的索引和这一项的索引不相等,返回的是第一次出现的这个值的索引,这个值就不会返回到filter执行后得到的新数组中。

 

要得到一个数组项中值的所有索引可以用循环实现

 1 var a=[2,3,2,5,6,1,2,3],b=[]; 2     var i= 0,index=0; 3     while(i< a.length){ 4         var index=(a.indexOf(2,index)); 5         if(index===-1){ 6             break; 7         } 8         b.push(index); 9         index++;10         i++;11     }12     console.log(b);//结果[0,2,6]