美文网首页
js快速排序及高阶数组转低阶数组及数组去重

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

作者: evilGenuis_9527 | 来源:发表于2019-04-11 09:23 被阅读0次
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})

相关文章

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

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

  • JS面试算法题

    数组快速排序 数组去重

  • 常用数组去重

    数组去重方式 快速排序

  • b站面试大纲

    HTML布局、CSS选择器及JS基础综合能力知识点算法基础:数组 flat、去重及排序react vue 理解及基...

  • JS数组方法速查

    1.数组去重 2.数组合并 3.数组排序(sort) 4.多维数组转一维数组(flat) 5.过滤数组(filte...

  • js对象数组深度去重和深度排序

    js对象数组深度去重和深度排序 要点:使用collect.js处理数组和对象 https://github.com...

  • 数组

    一维数组的创建及使用二维数组的创建及使用数组的基本操作数组排序算法

  • js数组分组和去重

    分组 去重 笔试中经常出现的js数组排序与去重算法

  • js数组排序和数组去重

    数组排序 1.冒泡排序 从第0项开始,与其相邻后面的一项比较,如果大于后一项就交换位置,使大的在后,遍历一轮后最大...

  • # 前端面试准备(day1)

    js算法与应用 排序部分 快速排序 优化过的冒泡排序 数组去重 编写一个JavaScript函数,输入指定类型的选...

网友评论

      本文标题:js快速排序及高阶数组转低阶数组及数组去重

      本文链接:https://www.haomeiwen.com/subject/uyeziqtx.html