将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
方法1:
let res = [...new Set(arr.flat(Infinity))].sort((a,b)=>a-b);
方法2:
//多维去扁平化方法
function MyFlat(arr){
let arrs = [];
function qbph(arr_){
for(let item of arr_){
if(Array.isArray(item)){
qbph(item);
}else{
arrs.push(item);
}
}
}
qbph(arr);
return arrs;
}
let res2 = [...new Set(MyFlat(arr))].sort((a,b)=>a-b);
方法3:
let res3 = [...new Set(arr.toString().split(","))].sort((a,b)=>{ return a-b}).map(Number);
方法4:
// // 去扁平化
function paiping(arr){
if(Array.isArray(arr)){
let arr_ = [];
digui(arr,arr_);
return arr_;
}
}
// 递归
function digui(arr_item,arr_){
for(let i=0;i<arr_item.length;i++){
if(Array.isArray(arr_item[i])){
digui(arr_item[i],arr_);
}else{
arr_.push(arr_item[i]);
}
}
}
let res4 =[...new Set(paiping(arr).sort((a,b)=>a-b))];