数组去重的三种方法

// 题2:数组去重,有三种方法:
//
// 方法一
// 利用Array类型的方法:indexOf() 从头部向后查找返回参数的位置,找不到则返回-1;
function a(arr){
var newArr=[];
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])===-1){
newArr.push(arr[i]);
}
}
return newArr;
}

console.log(a([1,2,3,4,5,3,3,2,1,3]));//[1, 2, 3, 4, 5]

// 方法二
//利用json的key值的唯一性
function b(arr){
var result = [];
var obj = {};
for(var i=0; i<arr.length; i++){
if(!obj[arr[i]]){
result.push(arr[i]);
obj[arr[i]] = 1;
}
}
return result;
}
console.log(b([1,2,3,4,5,3,3,2,1,3]));//[1, 2, 3, 4, 5]

// 方法三
//找到一个不重复的,就扔到新数组里面,剩余的里面再找不重复的,再扔到新数组里面,以此类推,最后返回新数组
function c(arr){
var result = [ arr[0] ];
for(var i=1; i<arr.length; i++){
if( toCon( arr[i] ) ){ //如果没有重复的
result.push( arr[i] );
}
}
function toCon(val){
for(var i=0; i<result.length; i++){
if( result[i] == val){
return false;
}
}
return true;
}
return result;
}
console.log(c([1,2,3,4,5,3,3,2,1,3])); //[1, 2, 3, 4, 5]

原文地址:https://www.cnblogs.com/xzsz/p/7388710.html