sort() 方法用于对数组的元素进行排序。

语法
arrayObject.sort(sortfunction)

参数
sortfunction 可选。规定排序顺序。必须是函数。

返回值
对数组的引用。请注意,数组在原数组上进行排序,不生成副本。

说明
如果调用该方法时没有使用参数,将按字母升序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行升序排列。先调用每个项的toString()方法,然后按照字符编码的顺序进行排序。。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。

实例
例子 1
按字母顺序进行排序:

  1. var arr = new Array(6);
  2. arr[0] = "George";
  3. arr[1] = "John";
  4. arr[2] = "Thomas";
  5. arr[3] = "James";
  6. arr[4] = "Adrew";
  7. arr[5] = "Martin";
  8. console.log(arr.sort().toString());

输出:

Adrew,George,James,John,Martin,Thomas

例子 2

  1. var arr = new Array(6);
  2. arr[0] = "10";
  3. arr[1] = "5";
  4. arr[2] = "40";
  5. arr[3] = "25";
  6. arr[4] = "1000";
  7. arr[5] = "1";
  8. console.log(arr.sort().toString());

  

输出:

1,10,1000,25,40,5

请注意,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:

  1. function sortNumber(a,b)
  2. {
  3. return a-b;
  4. }
  5.  
  6. var arr = new Array(6);
  7. arr[0] = "10";
  8. arr[1] = "5";
  9. arr[2] = "40";
  10. arr[3] = "25";
  11. arr[4] = "1000";
  12. arr[5] = "1";
  13. console.log(arr.sort(sortNumber).toString());

输出:

1,5,10,25,40,1000

如上在使用了sortNumber函数之后,就可以返回正确的值了,如果想进行降序排列只需要 return b-a 就可以了。

例子3

  1. function sortArr(a, b) {
  2. return a[0] - b[0];
  3. }
  4. var arr= [
  5. [1, '张三'],
  6. [8, '李四'],
  7. [10, '王小二'],
  8. [4, '王五']
  9. ]
  10. console.log(arr.sort(sortArr).toString());

输出:

1,张三,4,王五,8,李四,10,王小二

如果a和b本身就是数组,这个时候我们就需要通过对它们内部的值比较来对数组进行排序了,如上述实例。

当第一个比较值相等,但是我们还想进行再次区分的时候,可以使用第二比较值,并且比较的深度可以随着我们的需求扩展。

  1. function sortArr(a, b) {
  2. if (a[0] == b[0]) {
  3. return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0;
  4. }
  5. return a[0] - b[0];
  6. }
  7. var arr= [
  8. [1, '张三'],
  9. [8, '李四'],
  10. [4, '王五'],
  11. [4, '牛虻']
  12. ]
  13. console.log(arr.sort(sortArr).toString());

输出:

1,张三,4,牛虻,4,王五,8,李四

例子4

  1. function compare(a, b) {
  2. return a.age - b.age
  3. }
  4. var employees = []
  5. employees[0] = { name: "张三", age: 32 }
  6. employees[1] = { name: "李四", age: 17 }
  7. employees[2] = { name: "王五", age: 58 }
  8. employees[3] = { name: "牛虻", age: 62}
  9. employees.sort(compare);

当比较的数据越来越复杂的时候,我们最好使用对象进行排序。这样我们就能够从代码上看出来是使用什么值来进行比较的了。

  1.  

JavaScript Array对象sort() 方法小结的更多相关文章

  1. Javascript Array对象 sort()方法,记忆方法,方法扩展

    相信 有很多 同仁们,尤其是初学者,在记住 Array对象 sort() 方法的排序,规则上,有点困难: 其实sort()方法已经在实际工作中用到很多遍了,可当我仔细推敲,这个sort()方法,什么时 ...

  2. JavaScript Array 对象扩展方法

    /** 删除数组中指定索引的数据 **/ Array.prototype.deleteAt = function (index) { if (index < 0) { return this; ...

  3. JavaScript Array 对象的方法,比如push和unshift

    https://www.runoob.com/jsref/jsref-obj-array.html js数组与字符串的相互转换 一.数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: ...

  4. JavaScript 数组(Array)对象的方法

    JavaScript 数组(Array)对象的方法 concat() 描述:用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 原型:arrayObject.conc ...

  5. JavaScript Array 对象

    JavaScript Array 对象 Array 对象 Array 对象用于在变量中存储多个值: var cars = ["Saab", "Volvo", & ...

  6. Array对象的方法详情

    题外话:从事前端开发有很长一段时间了,一直在不断的扩充各种框架的学习,总觉得要学的东西好多,但是技能并没有得到很大的提升,后发现自己一味去追求的它的广度,并没用去深究其深度,所以决定打算从零开始,从最 ...

  7. Array 对象-sort()

    Array 对象-sort() sort方法对数组成员进行排序,默认是按照字典顺序排序.排序后,原数组将被改变. sort方法不是按照大小排序,而是按照字典顺序.也就是说,数值会被先转成字符串,再按照 ...

  8. 浏览器端-W3School-浏览器端:JavaScript Array 对象

    ylbtech-浏览器端-W3School-浏览器端:JavaScript Array 对象 1.返回顶部 1. Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对 ...

  9. JavaScript深入理解sort()方法

    一. 基本用法 let arr1 = [3, 5, 7, 1, 8, 7, 10, 20, 19] console.log(arr1.sort()) // [1, 10, 19, 20, 3, 5, ...

随机推荐

  1. 对c++ public、protected、private关键字的理解

    首先要明确一下: 1.这三个关键字在两种地方会用到,一个是对类的成员变量和成员函数修饰时(比如私有的成员变量,受保护的成员变量·,公有的函数),还有一种是对继承方式的修饰(比如公有继承,保护继承). ...

  2. Apache设置页面认证(原创贴-转载请注明出处)

    ================写在前面的话============== 1.本试验使用的apache版本是2.4.24 场景描述:网站后台管理页面比较重要,不应该任何人都让访问,所以对后台页面做认证 ...

  3. ipad pro 文章

    这篇文章是通过iPad Pro发送的.体验一下键盘输入,以及safari下的输入.这个键盘的输入手感好一般,按键行程较短.

  4. Python3基础 casefold 将字符串中的所有字符变成小写

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  5. Boost学习笔记(三) progress_timer

    progress_timer也是一个计时器,它继承自timer,会在析构时自动输出时间,省去timer手动调用elapsed()的工作,是一个用于自动计时相当方便的小工具. #include < ...

  6. 输入5至10之间的数字(用javaScript实现判断)

    输入5至10之间的数字 ----用javaScript实现判断 代码如下: <!DOCTYPE html><html><body> <script>fu ...

  7. destoon系统中get_maincat的用法及解释

    get_maincat函数的用法, 如get_maincat(0, $mid, 1),其中第一.二.三个参数分别表示什么? 第一个参数代表parentid 第二个参数代表所有的分类 第三个参数 代表 ...

  8. kali4.0 安装32位库

    一.前情提要: OS:Kali4.0 64bit 二.安装32位库: 错误方法:sudo apt-get install lib6-i386 正确方法如下: 1.先以root用户身份登陆: su ro ...

  9. zoj3806Incircle and Circumcircle

    链接 自己的本本没有装画图软件,先借用两张图片..博客园不让贴源地址... 可以想到对于一个确定的外接圆的三角形来说内切圆最大的时候为等边三角形,如下图: 确定有合法的解之后,接下来就是去找这个解,解 ...

  10. Java 源码解析之局部变量检查

    package com.tang; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream ...