为 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; }