资讯专栏INFORMATION COLUMN

JS骚操作之数组快速排序

yanbingyun1990 / 2245人阅读

摘要:来,今天我来教大家一个骚操作。我利用的就是数组的索引来排序的,大家都知道,索引就是从开始,然后依次递增的。技术总结这个就是巧用了数组的索引,默认就是一个从小到大的排序的特性。


如果你想要对数组排序,可能会去百度去搜,于是有很多人教你用冒泡,什么二分插入排序、堆排序,如果不太懂其中的代码意思,很难看明白。来,今天我来教大家一个骚操作。

我利用的就是JS数组的索引来排序的,大家都知道,索引就是从0开始,然后依次递增的。好了,废话少说,开始撸了。

我们来上完整的代码:

var arr = [1,4,2,5,21,3,44,12];//要排序的数组。

var res = [];//要返回的排序后的数组。

var arr1 = [];//中间用到的过渡数组

arr.forEach(a=>{ arr1[a] = 1; });

arr1.forEach((r,index)=>{

    if(r === 1){
         res.push(index);//通过push默认是是升序,如果想降序可以采用unshift方法,或者在最后将数组反转一下即可。
    }
})

console.log(res);

arr.forEach(a=>{

//这一步很关键,我们把要排序的数组的每一项当作了中间过渡数组的索引,并赋值为1(这里不一定要是1,给一个特定的值就行)

arr1[a] = 1;

});

这时候arr1 的结果为: [empty, 1, 1, 1, 1, empty × 7, 1, empty × 8, 1, empty × 22, 1, empty × 10, 1]

这时候中间过渡数组arr1就有数据了,但是这个数组中有很多undefined,这时候我们再做最后的排除就好了。

写在最后:有人可能会提出来,如果数组中有重复项,那这种排序是不是不行了,当然可以, 做下处理,把重复的先拿到,重复了几次,然后在最后的结果数组中通过splice(index,0,item);对数组进行插入操作即可。

技术总结:

这个就是巧用了数组的索引,默认就是一个从小到大的排序的特性。这种方法简单易懂。

数组的基本方法的使用,像forEach push unshift reverse splice(这个splice可以做删除,插入,修改) 等。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/104177.html

相关文章

  • JS数组的几个不low操作(3)

    摘要:序列文章面试之函数面试之对象前言本文主要从应用来讲数组的一些骚操作如一行代码扁平化维数组数组去重求数组最大值数组求和排序对象和数组的转化等上面这些应用场景你可以用一行代码实现扁平化维数组终极篇是扁平数组的表示维度值为时维度为无限大开始篇实质 showImg(https://segmentfault.com/img/bVbpRMS?w=1858&h=1286); 序列文章 JS面试之函数...

    fish 评论0 收藏0
  • js操作骂人不带脏

    摘要:让我们快速的复习一下在中一共有两种类型的值原始值和对象值原始值有布尔值数字还有字符串其他的所有值都是对象类型的值包括数组和函数类型转化先按运算符来分一下类减号,乘号,肯定是进行数学运算,所以操作数需转化为类型。 前言 很多小伙伴们觉得javaScript很简单,下面的这行 javaScript代码可能会让你怀疑人生。 (!(~+[])+{})[--[~+][+[]]*[~+[]] +...

    Sunxb 评论0 收藏0
  • js 排序算法快速排序

    摘要:快速排序是一种划分交换排序。快速排序基于冒泡递归分治。他在大数据情况下是最快的排序算法之一,平均事件复杂度很低而且前面的系数很小,在大量随机输入的情况下最坏情况出现的概率是极小的。 快速排序是一种划分交换排序。它采用了一种分治的策略,通常称其为分治法。 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。...

    Eidesen 评论0 收藏0
  • JavaScript专题解读 v8 排序源码

    摘要:插入排序是稳定的算法。所以准确的说,当数组长度大于的时候,采用了快速排序和插入排序的混合排序方法。在对数组进行了一次快速排序后,然后对两个子集分别进行了插入排序,最终修改数组为正确排序后的数组。 JavaScript 专题系列第二十篇,也是最后一篇,解读 v8 排序源码 前言 v8 是 Chrome 的 JavaScript 引擎,其中关于数组的排序完全采用了 JavaScript 实...

    princekin 评论0 收藏0
  • 用好JS 原生API系列数组

    摘要:函数的因为也拥有属性,所以其被称为类数组对象。方法数组的拼接,,指被拼接的对象数组,为数组。如果为负,则将其视为,其中为数组的长度。而提供了数组反转和排序来对数组进行重排序。用好原生,你的代码将显得干净,有趣。 前言 最近工作做数据交互展示,常和数据打交道,而随之而来的就是遇见后端传来的各种各样的数组,我需要用各式各样的方法来变换这些数据,来最好的展示这些数据;很多东西久了没用就容易忘...

    shenhualong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<