数组去重
一、用数组的 indexO方法检测
function unique(arr) {
var arr1 = [];
for (var i = 0; i < arr.length; i++){
if (arr1.indexOf(arr[i]) === -1){
arr1.push(arr[i]);
}
}
return arr1;
}
考虑 indexOf 的兼容性, 实现Array.prototype.indexOf:
Array.prototype.indexOf = Array.prototype.indexOf || function(searchElement, fromIndex){
//是否传入第二个参数,以及传入的第二个参数为负数
fromIndex = fromIndex || 0;
if( fromIndex < 0 ){
fromIndex += this.length;
if( fromIndex < 0 ){
fromIndex = 0;
}
}
for( ; fromIndex < this.length; fromIndex++){
if(this[fromIndex] === searchElement){
return fromIndex;
}
}
return -1;
}
二、利用对象键值判断 (不能正确解析 1与 '1')
function unique1(arr){
var obj = {}, arr1 = [];
for(var i = 0; i < arr.length; i++){
if(!obj.hasOwnProperty(arr[i])){
obj[arr[i]] = true;
arr1.push(arr[i]);
}
}
return arr1;
}
三、ES6中的Array.from() 以及 new Set()
function unique2(arr){
return Array.from(new Set(arr));
}