<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组去重的 3种方法</title>
</head>
<body>
<script type="text/javascript">
var demoAr = [3,4,5,5,7,2,1,4,3];
// 方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组
function unique1(ar){
var newAr = [];
for( var i=0; i<ar.length; i++ ){
if( newAr.indexOf(ar[i]) === -1 ){
newAr.push(ar[i]);
}
}
return newAr;
}
// 方法二:遍历数组,利用object对象保存数组值,判断数组值是否已经保存在object中,未保存则push到新数组并用object[arrayItem]=1的方式记录保存
function unique2(ar){
var newAr = [];
var obj = {};
for(var i=0, j=ar.length; i<j; i++){
if( !obj[ar[i]] ){
obj[ar[i]] = 1;
// console.log(obj);
newAr.push(ar[i]);
}
}
return newAr;
}
// 方法三:数组下标判断法, 遍历数组,利用indexOf判断元素的值是否与当前索引相等,如相等则加入
function unique3(ar){
var newAr = [];
ar.forEach(function(item, index, array){
if( ar.indexOf(item) === index ){
newAr.push(item);
};
});
return newAr;
}
// 方法四:数组先排序, 然后比较俩数组一头一尾进行去重 (优点:效率高 缺点:会改变数组原有顺序)
function unique4(ar){
var newAr = [],
end;
ar.sort();
end = ar[0];
newAr.push(ar[0]);
for( var i=1; i<ar.length; i++ ){
if(ar[i]!=end){
newAr.push( ar[i] );
end = ar[i];
}
}
return newAr;
}
console.log( unique1(demoAr) );
// console.log( unique2(demoAr) );
// console.log( unique3(demoAr) );
// console.log( unique4(demoAr) );
</script>
</body>
</html>
参考自:http://www.cnblogs.com/leonwang/p/4845576.html