js数组去重

来源:互联网 发布:幼儿教育发展前景知乎 编辑:程序博客网 时间:2024/05/16 03:25

为 Array 对象添加一个去除重复项的方法
示例1

输入

[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN]

输出

[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']
关键是indexOf的用法:
indexOf是判断resArr数组中的值和当前的值有没有相同的,如果有相等的会返回那个位置,没有相同的返回-1,这里返回-1的意思是没有相同的,也就是resArr数组里还没有当前的数。再之后再遇到有相同的就不会返回-1了,也就不会继续执行if里面的了。
Array.prototype.uniq = function () {   var resArr = [];   var flag = true;        for(var i=0;i<this.length;i++){       if(resArr.indexOf(this[i]) == -1){           if(this[i] != this[i]){   //排除 NaN              if(flag){                   resArr.push(this[i]);                   flag = false;              }           }else{                resArr.push(this[i]);           }       }   }    return resArr;}