如何删除数组里面多余的重复项(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>
<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>
就是检查r数组里面有没有a[i]这个元素,有则$.inArray>=0。根据&&左侧为false则不继续右侧判断,那么就不执行后面的r.push(a[i]); ,相反,如果没有则$.inArray()<0为true,那么就执行后面的逻辑,这里把这个元素推到r中,实际如下:
if($.inArray(a[i],r)<0){
r.push(a[i]);
}
这样可以看懂了吧
$.extend({
var a = [1,2,3,2,2,1,2,3,3,4,5,3,2,1];
uniq:function(a) {
var r=[];
for (var i=0,i<a.length;i++){
r.push(a[i]);
for(var j=0;j<r.length-1;j++){
if(s[i]==r[j]){
r.splice(r.length-1,1);
}
}
}
return r;
}
});
var a = [1,2,3,2,2,1,2,3,3,4,5,3,2,1];
function uniq(a){
var b={};
var c=[];
for(var i=0;i<a.length;i++){
!b[a[i]]&&(b[a[i]]=1)&&c.push([a[i]]);
}
return c;
}
var a = [1,2,3,2,2,1,2,3,3,4,5,3,2,1];
alert(uniq(a));
</script>