JS如何删除数组里面多余的重复项?

如何删除数组里面多余的重复项(2)?

找高手帮忙写了一个jquery扩展,对&&有点小疑问。

<script. type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$.extend({     
    uniq:function(a) {
        var r=[];
        for (var i=0,l=a.length; i<l; ++i){
            //请问下面的 && 如果前面的 $.inArray(a[i],r)<0 为flase还会执行r.push(a[i])吗?
            $.inArray(a[i],r)<0&&r.push(a[i]);        
        };
        return r; 
    }   
});

var a = [1,2,3,2,2,1,2,3,3,4,5,3,2,1];
alert($.uniq(a));
</script>

  • $.inArray(a[i],r)<0&&r.push(a[i]);  
    就是检查r数组里面有没有 a[i]这个元素,有则$.inArray>=0。根据&&左侧为false则不继续右侧判断,那么就不执行后面的 r.push(a[i]); ,相反,如果没有则$.inArray()<0为true,那么就执行后面的逻辑,这里把这个元素推到r中,实际如下:
    if($.inArray(a[i],r)<0){
    r.push(a[i]);
    }
    这 样可以看懂了吧