/**
* 数组去重方法:
* 1、for循环遍历方法
* 2、filter+hashMap
* 3、filter+indexOf方法
* 4、for+sort方法
*/
/*
* for循环
* 遍历数组,和新数组的每一项对比,有不同就push
*/
function unique1(arr) {
var newArr = [], isRepeated;
for( var i = 0, iLen = arr.length; i < iLen; i++) {
isRepeated = false;
for(var j = 0, jLen = newArr.length; j < jLen; j++) {
if(arr[i] == newArr[j]) {
isRepeated = true;
break;
}
}
!isRepeated && newArr.push(arr[i]);
}
return newArr;
}
/*
* filter+hashMap
* hash下标
*/
function unique2(arr) {
var hashMap = {};
return [].filter.call(arr, function (item) {
if(!hashMap[item]) {
hashMap[item] = 1;
return true
}
});
}
/*
* filter + indexOf
* indexOf 返回第一个匹配元素的索引值
*/
function unique3(arr) {
return [].filter.call(arr, function (item, index) {
return arr.indexOf(item) === index;
});
}
/*
* for + sort
* 先sort对数组进行排序,然后相邻的对比,不同就push
*/
function unique4(arr) {
arr.sort(); // 数组排序
var newArr = [arr[0]];
for(var i = 1, len = arr.length; i < len; i++) {
// 相邻的对比(即新数组的最后一个元素与当前遍历元素对比),不相等就加入新数组
if(arr[i] !== newArr[newArr.length-1]) newArr.push(arr[i]);
}
return newArr;
}
网友评论