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<arr.length;i++){
    if(arr[i]<pvot){
      left.push(arr[i])
    }else {
      right.push(arr[i])
    }
  }
  return [...quickSort(left),pvot,...quickSort(right)]
}
setArr(arr);
newArr=[...set]
newArr=quickSort(newArr);
console.log(newArr,'set ')

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

Array.from(new Set(arr.flat(Infinity))).sort((a,b)=>{ return a-b})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容