关于数组方法sort的知识点整理

原创 2018年04月17日 21:47:46

sort() 方法用就地( in-place )的算法对数组的元素进行排序,并返回数组。 sort 排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。

参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

(1)下面的代码是调用该方法没有使用参数,会按照字母的顺序对数组中的元素进行排列。

var arr = [1,100,40,25,38];
var arr1 = arr.sort();//[1,100,25,38,40]

(2)我们可以使用sort方法来自定义排序规则来实现大小的排序

var arr = [100,55,23,1,5];
arr.sort(function(a,b){
    return a > b; //这里是判断为真时交换位置,为假时不变。所以a > b是从小大小的排序,a < b从大到小的排序。
});
console.log(arr); //[1,5,23,55,100]

   这里我们说一下sort大小排序方法底层的排序规则,有人说说sort的底层排序机制和冒泡排序一致是有误解的。

var arr = [1,2,3,6,2,4,7,11,6];
arr.sort(function  (a,b) {
  console.log(a+'-------'+b);
})

控制台输出的是

1-------2
2-------3
3-------6
6-------2
3-------2
2-------2
6-------4
3-------4
6-------7
7-------11
11-------6
7-------6
6-------6

所以由上面的输出结果我们可以看出sort排序的机制是这样的,假如你的判断条件 a > b(由小到大排列),整个运算过程是这样的:1和2比较为假,不交换位置。2和3比较为假,不交换。3和6比较,为假不交换。6和2比较,为真交换位置。(交换位置之后会和前一位进行比较,如果为真,继续交换,再继续和前一位进行比较,直到为真。)交换之后和前一位比较,所以3和2比较,为真交换位置,2和2继续比较为假,不变。这里会回到上一次的位置,6和4比较,为真交换位置,3和4继续比较为假,继续6和7的比较为假,7和11的比较为假,11和6的比较为真,交换位置,7和6比较为真,交换位置。6和6比较为假,结束比较。

(3)我们可以使用sort方法来自定义排序规则来实现json数据的排序

var arr = [{id:1},{id:6},{id:2}];
arr.sort(function(a,b){
    return a.id > b.id;
});

(4)使用sort方法进行数组随机打乱的操作

var arr = [1,2,3,4,5,6,7,8,9,1,1,25,4578,12,8,4,78541,78,21,5];
arr.sort(function(a,b){
  return parseInt(Math.random()*2);
})





Swing入门基础知识点全接触

1.前言:  当我们学习过了java中的基本语法,并且熟悉java的面向对象基础以后,我们就可以开始简单的Swing程序的设计,用过Vb的朋友可能会被它的简单的设计用户界面方法所吸引,只需要拖几个控件...
  • zhikun518
  • zhikun518
  • 2007-04-27 18:33:00
  • 637

python一些基本知识点之列表(二)

Python的列表对象是这个语言提供的最通用的序列。 列表是一个任意类型d
  • peng825223208
  • peng825223208
  • 2014-06-04 09:18:37
  • 882

编程语言相关知识点梳理

c++语言常考点c语言常考点 1 c中的空类 默认产生哪些类成员函数 2 单例模式的特点是什么用c实现单例模式 3 c中不同数据类型所占用的内存大小 4 编写类String的构造函数 析构函数和赋值函...
  • xiaoquantouer
  • xiaoquantouer
  • 2017-05-03 23:33:20
  • 1137

J2EE基础知识点总结

J2SE基础   1.     九种基本数据类型的大小,以及他们的封装类。 基本类型 大小(字节)      默认值    封装类 byte         1           (byte...
  • sunsfan
  • sunsfan
  • 2016-09-28 14:58:47
  • 4721

抽象类和接口——知识点梳理

抽象类当多个类中出现相同功能,但是功能主体不同, 这是可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体。抽象:简言之,就是看不懂。抽象类的特点: 1,抽象方法一定在抽象类中。 2,抽象方...
  • iblade
  • iblade
  • 2016-01-23 17:06:22
  • 619

数组相关方法以及sort方法

js中的数组的length,既可以获取又可以设置,本来长度是6,设置成3时,此时数组里的值只有前三个,所以可以用来清空数组 push(4),往数组尾部添加一个4,他的返回值是最新数组的长度 pop...
  • ilikejj0
  • ilikejj0
  • 2018-03-11 18:14:13
  • 16

MySQL知识点系统总结

MySQL数据库是一个非常流行的关系型数据库。配合Linux、PHP、Apache,简称lamp,是一般个人企业网站的首选。MySQL用起来不难,要系统的用好,可不是一件简单的事。于是我对MySQL系...
  • u012558554
  • u012558554
  • 2016-04-06 10:03:53
  • 641

前端知识点整理

  • 2016年09月10日 19:07
  • 837KB
  • 下载

Java知识点整理:第一章:基础知识梳理

把java知识给总结下,也是我自己一个梳理的过程,可能这辈子这种事情就会干这一次了,好好梳理梳理脑子里面的知识。 学习Java其实没有大家想想中的那么困难,有一句话说的很好,却往往被大家所忽视,那就是...
  • junlei0426
  • junlei0426
  • 2016-11-06 20:27:51
  • 671

Java基础复习,整理知识点

最近开始复习Java基础,和Android,将知识点整理如下,另外开始尝试使用MarkDown写博客,写的有问题的地方还请各位包含。Android部分的内容整理见我的另一篇博客1.Java关键字总结梳...
  • SCUcoder
  • SCUcoder
  • 2016-03-07 19:51:29
  • 6406
收藏助手
不良信息举报
您举报文章:关于数组方法sort的知识点整理
举报原因:
原因补充:

(最多只允许输入30个字)