数组去重的三种方法
2018-10-18 本文已影响0人
阿布朗迪
方法一:利用封装函数去重
var arr = [1,2,2,4,4,7,10,15,6,8,34];
var newArr = [];
var flag = false;
function hasNumber(arr,num){//判断一个数是否在数组里
for( var i = 0; i < arr.length ;i++){
if(arr[i] == num ){
flag = true;
return true;
}
}
if( !flag ){
return false;
}
}
function norepeat(arr){
var newArr = [];
for( var i = 0; i < arr.length;i++){
if( hasNumber(newArr,arr[i])){
newArr.push( arr[i]);
}
}
return newArr;
}
方法二:利用对象的键值对唯一性,
var arr = [1,2,2,4,4,7,10,15,6,8,34];
var obj = {};
var newArr = []
// console.log( ! obj )
for( var i = 0; i < arr.length;i++){
if( obj[arr[i]] == undefined ){//此处是利用对象key的唯一性
obj[arr[i]] = 2;//如果对象中arr[i],则把它设置为value值,形成键值对
newArr.push(arr[i]);
}
}
console.log( newArr )
方法三:使用ES6新增的Set()
方法
let arr = [1,2,3,4,4,3,2,4,1,5,6]
let mySet = new Set(arr);
let newArr = [];
for(let i of mySet){//for ···of···用于无法使用索引值的遍历
newArr.push(i);
}
console.log(newArr);