js快速排序及高阶数组转低阶数组及数组去重

var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]; //编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组

let newArr=[];
let set=new Set()
setArr=(arr)=>{
arr.forEach(item=>{
  if(typeof(item=='object')&&Array == item.constructor){
    setArr(item)
  }else{
    set.add(item)
  }
})  
}
quickSort=(arr)=>{
  if(arr.length<=1){
    return arr
  }
  let pvotIndex=Math.floor(arr.length/2);
  let pvot =arr.splice(pvotIndex,1)[0];
  let left=[];
  let right=[];
  for(let i=0;i

首先利用ES6 SET数据类的特性递归去重复数据。然后使用快速排序对数组进行排序
上面是手写的,下面有纯用api不使用快排的写法

Array.from(new Set(arr.flat(Infinity))).sort((a,b)=>{ return a-b})

你可能感兴趣的:(js快速排序及高阶数组转低阶数组及数组去重)