如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

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

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

简单点:比较函数两个参数a和b,返回a-b升序,返回b-a降序

以下通过几个例子来理解

普通数组 升序

var arr = [4,3,6,5,7,2,1];
arr.sort();
console.log(arr);
//输出结果[1,2,3,4,5,6,7]

普通数据 降序

var arr = [4,3,6,5,7,2,1];
arr.sort();
arr.sort(function(a,b){
return b-a;
});
console.log(arr);
//输出结果[7,6,5,4,3,2,1]

对象数组排序

var arr= [
{ 'sortNo': 2},
{ 'sortNo': 1},
{ 'sortNo': 5},
{ 'sortNo': 6},
{ 'sortNo': 7},
{ 'sortNo': 3},
{ 'sortNo': 9},
{ 'sortNo': 4},
{ 'sortNo': 0}
];
arr.sort(function(a, b){
return a.sortNo - b.sortNo;
});
console.log(arr);
//输出结果
//{ 'sortNo': 2}
//{ 'sortNo': 1}
//{ 'sortNo': 5}
//{ 'sortNo': 6}
//{ 'sortNo': 7}
//{ 'sortNo': 3}
//{ 'sortNo': 9}
//{ 'sortNo': 4}
//{ 'sortNo': 0}

对象数组多条件排序

(此例如果sortNo相同,则按sortNo2从大到小)

var arr= [
{ 'sortNo': 2, 'sortNo2': 3},
{ 'sortNo': 1, 'sortNo2': 3},
{ 'sortNo': 5, 'sortNo2': 3},
{ 'sortNo': 6, 'sortNo2': 3},
{ 'sortNo': 7, 'sortNo2': 3},
{ 'sortNo': 3, 'sortNo2': 4},
{ 'sortNo': 3, 'sortNo2': 2},
{ 'sortNo': 3, 'sortNo2': 1},
{ 'sortNo': 3, 'sortNo2': 3},
{ 'sortNo': 8, 'sortNo2': 3},
{ 'sortNo': 4, 'sortNo2': 1},
{ 'sortNo': 4, 'sortNo2': 2}
];
arr.sort(function(a, b){
if (a.sortNo === b.sortNo) {
return b.sortNo2 - a.sortNo2;
} else {
return a.sortNo - b.sortNo;
}
});
console.log(arr); //输出结果
//{ 'sortNo': 1, 'sortNo2': 3}
//{ 'sortNo': 2, 'sortNo2': 3}
//{ 'sortNo': 3, 'sortNo2': 4}
//{ 'sortNo': 3, 'sortNo2': 3}
//{ 'sortNo': 3, 'sortNo2': 2}
//{ 'sortNo': 3, 'sortNo2': 1}
//{ 'sortNo': 4, 'sortNo2': 2}
//{ 'sortNo': 4, 'sortNo2': 1}
//{ 'sortNo': 5, 'sortNo2': 3}
//{ 'sortNo': 6, 'sortNo2': 3}
//{ 'sortNo': 7, 'sortNo2': 3}
//{ 'sortNo': 8, 'sortNo2': 3}

JS sort() 方法的更多相关文章

  1. js sort方法根据数组中对象的某一个属性值进行排序(实用方法)

    js sort方法根据数组中对象的某一个属性值进行排序 sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {nam ...

  2. js sort方法根据数组中对象的某一个属性值进行排序

    sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {name:'zopp',age:0}, {name:'gpp' ...

  3. js 排序:sort()方法、冒泡排序、二分法排序。

    js中的排序,这里介绍三种,sort()方法.冒泡排序.二分法排序. 1.sort方法 写法:  数组.sort(); 返回排好序的数组,如果数组里是数字,则由小到大,如果是字符串,就按照第一个字符的 ...

  4. js数组排序 reverse()和sort()方法的使用

    WEB前端|js数组排序reverse()和sort()方法的使用,数组中已经存在两个可以直接用来重排序的方法:reverse()和sort(). reverse()方法会对反转数组项的顺序. var ...

  5. 基于原生JS封装数组原型上的sort方法

    基于原生JS封装数组原型上的sort方法 最近学习了数组的原型上内置方法的封装,加强了用原生JS封装方法的能力,也进一步理解数组方法封装的过程,实现的功能.虽然没有深入底层,了解源码.以下解法都是基于 ...

  6. JS基础篇--sort()方法的用法,参数以及排序原理

    JS基础篇--sort()方法的用法,参数以及排序原理   sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点.语法:arrayObject.sort( ...

  7. JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)

    1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...

  8. js 自带的 sort() 方法

    1. 方法概述 Array的sort()方法默认把所有元素先转换为String再根据Unicode排序, sort()会改变原数组,并返回改变(排序)后的数组 . 2. 例子 2.1 如果没有提供自定 ...

  9. js中的数组Array定义与sort方法使用示例

    Array的定义及sort方法使用示例 Array数组相当于java中的ArrayList  定义方法:  1:使用new Array(5  )创建数组 var ary = new Array(5): ...

随机推荐

  1. 内联元素于与块元素的转换 相对定位、绝对定位以及fixed定位 Z轴覆盖

    今天上午学习了内联元素于与块元素的转换     个人觉的display:none将元素非常好用,可以配合当鼠标放到这里会出现. 转换成行内元素display: inline;  转换成块元素displ ...

  2. 控制使用jquery load()方法载入新页面中的元素

    最近在项目中用到jquery的load()方法来加载页面,首先简单说一下load()方法. load(url,data,callback);该方法接收三个参数,第一个是载入的页面地址,第二个是要传到服 ...

  3. ZZFAFA_BilibiliMusic_DownUrl

    OneDrive_DownFileUrl: FHProductionHK-BGM:https://1drv.ms/f/s!Ajs97XY1QSQ8cPXo36h4AK9XG7k CABAL&A ...

  4. 如何在C++中使用动态三维数组

    目录 1. 使用new和delete来构造 2. 使用malloc和free来构造 3.构造函数来生成数组 1. 使用new和delete来构造 在使用new申请内存时,在使用过后,一定要采用dele ...

  5. java8_api_格式化数据

    格式化数据1    Locale类    格式化日期时间    格式化数字        Locale类,主要是国际化相关        该类代表语言环境        实例化:           ...

  6. C#集合类型大揭秘 【转载】

    [地址]https://www.cnblogs.com/songwenjie/p/9185790.html 集合是.NET FCL(Framework Class Library)的重要组成部分,我们 ...

  7. visual studio 2017下载地址

    因为Visual studio 2017采用的是下载安装模式,所以下载比较慢,安装不方便.所以,这几天将下载过的visual studio 2017的文件打包成ISO文件并存到了百度网盘.希望对现在需 ...

  8. TZipFile FileNames中文乱码解决办法

    TEncoding.Default.GetString(zip.FileInfo[0].FileName); 补充说明: Zip.Extract(Zip.FileName[0], 'd:\'); 解压 ...

  9. sort简单用法

    -u 去重## 查看文件内容cat test_sort.txt ## sort -u 去重cat test_sort.txt |sort -u----------------------------- ...

  10. 饿了么测试专场技术沙龙实况回顾&PPT 下载

    PPT下载和视频观看链接 链接:https://pan.baidu.com/s/1dE8uXHZ 密码:6j5z视频直播回顾: http://www.itdks.com/dakashuo/playba ...