JavaScript数组去重的方法

2018-05-05  本文已影响0人  雨落失忆之城

给数组去重的方法是有很多种的,面对这个问题,我一开始的想法是把数组元素push到另外一个空数组里面,然后循环判断。

具体方法如下:

var a = ['a','b','a','c'];

function c(arr){

var str = [];

for(i=0;i<arr.length;i++){

     if(str.indexOf(arr[i])<0){

            str.push(arr[i]);

     }

}

return str;

}

a = c(a);

因为indexOf()这个方法返回了字符串在数组对象(字符串也可以看做数组对象)中第一次出现的位置,也就是下标。如果不存在就返回-1。当有重复的元素的时候str.indexOf()返回的值大于或等于0就不会被push到新的数组中了。

然而最近在网上学习的时候,学到了这样一个操作数组的方法 : filter()   我又了解了一个新的数组去重方法。

如下:

var b = ['abc','def','abc','ghi','def','jkl'];

b = b.filter(function(i,ind,s){

        return s.indexOf(i)===ind;

});

console.log(b);

基本原理是,filter()方法筛选数组中元素,方法中接收的回调函数支持多个参数,第一个参数代表当前元素,第二个参数代表当前下标,第三个参数代表处理数组本身。接收的函数返回true 则保留当前元素,返回false则删掉当前元素。通过这种方法就规避了循环,实现了数组的去重。

上一篇下一篇

猜你喜欢

热点阅读