一,用es5和es6封装一个数组去重的方法
1,去除指定的数组元素
var arr = [11,22,11,33,33,22,22,44,55];
function delRepeat( arr, val ){
for( var i=arr.length-1; i>=0; i-- ){
if( arr[i] === val ){
arr.splice(i, 1);
}
}
return arr;
}
console.log(delRepeat(arr, 22));
2,去除所有重复的元素
function delRepeat2( arr ){
// 定义一个新数组
var newArr = [];
// 遍历传进来的数组
for(var i=0; i<arr.length; i++){
// 如果newArr里没有arr[i]
if( newArr.indexOf(arr[i]) == -1 ){
// 把arr[i]传进新数组
newArr.push(arr[i]);
}
}
// 返回新数组
return newArr;
}
var arr = [11,22,11,33,33,22,22,44,55];
console.log(delRepeat2(arr));
3,去除所有重复的元素(es6写法)
let arr = [11,22,11,33,33,22,22,44,55];
var newArr = [...new Set(arr)] //利用set生成不重复的伪数组,然后【...value】将伪数组转化为新的真数组
alert(newArr);
set是一种新的数据结构,它可以接收一个数组或者是类数组对象,自动去重其中的重复项目。返回一个新的对象。
二,数组扁平化
var arr=[1,2,[3,4,[5,6]],5,6]
var arr2=[]
function handleArr(arr,arr2){
var arr2=arr2 ||[]
for(var i=0;i<arr.length;i++){
if(Object.prototype.toString.call(arr[i])==='[object Array]'){
handleArr(arr[i],arr2) //关键就是这次递归
}else{
arr2.push(arr[i])
}
}
return arr2
}
arr2=handleArr(arr,arr2)
console.log(arr2)