一、数组去重的方法
1.for 循环,利用 splice
function unique(arr){
for(var i=0; i<arr.length; i++){
for(var j=i+1; j<arr.length; j++){
if(arr[i]==arr[j]){ //第一个等同于第二个,splice方法删除第二个
arr.splice(j,1);
j--;
}
}
}
return arr;
}
2.利用 indexOf
function newArr(array){
//创建一个新的数组
var arr = [];
for(var i=0;i<arr.length;i++){
if(arr.indexOf(array[i])==-1){
arr.push(array[i]);
}
}
return arr;
}
3.利用es6 的 set 去重
function unique (arr) {
return Array.from(new Set(arr))
}
4.用include 方法
function unique(arr) {
if (!Array.isArray(arr)) {
console.log('type error!')
return
}
var array =[];
for(var i = 0; i < arr.length; i++) {
if( !array.includes( arr[i]) ) {//includes 检测数组是否有某个值
array.push(arr[i]);
}
}
return array
}
二、数组扁平化的方法
——扁平化的处理摘自博文:https://blog.csdn.net/weixin_41282726/article/details/98379804
数组扁平化是指将一个多维数组变为一维数组
[1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]
核心:遍历数组arr,若arr[i]为数组则递归遍历,直至arr[i]不为数组并与之前的结果concat。
扁平化嵌套数组:
var arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
//使用 Infinity 作为深度,展开任意深度的嵌套数组
arr3.flat(Infinity);
// [1, 2, 3, 4, 5, 6]