用JavaScript脚本为Array对象添加一个去除重复项的方法。
}
Array.prototype.distict=function(){
var result=[],flag=false;
for(var i=0;i<this.length;i++){
if(this[i]!=this[i]){
if(flag){
continue;
}else{
flag=true;
result.push(this[i]);
}
}else if(result.indexOf(this[i])==-1){
result.push(this[i]);
}
}
return result;
};
var arr=[2,null,3,4,NaN,2,3,6,8,4,NaN,undefined,undefined,null,6];
//[2, null, 3, 4, NaN, 6, 8, undefined]
Array.prototype.removeDulplicates = function () {
for (var i = 0; i < this.length;) {
removeDulplicatesFromArray(this, this[i], ++i);
}
function removeDulplicatesFromArray(arr, item, start) {
var index = arr.indexOf(item, start);
if (index != -1) {
arr.splice(index, 1);
removeDulplicatesFromArray(arr, item, index);
}
}
};
Array.prototype.uniq = function () { // 长度只有1,直接返回当前的拷贝 if (this.length <= 1) { return this.slice(0); } var aResult = []; for (var i = 0, l = this.length; i < l; i++) { if (!_fExist(aResult, this[i])) { aResult.push(this[i]); } } return aResult; // 判断是否重复 function _fExist(aTmp, o) { if (aTmp.length === 0) { return false; } var tmp; for (var i = 0, l = aTmp.length; i < l; i++) { tmp = aTmp[i]; if (tmp === o) { return true; } // NaN 需要特殊处理 if (!o && !tmp && tmp !== undefined && o !== undefined && isNaN(tmp) && isNaN(o)) { return true; } } return false; } }[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN].uniq()[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']