sort 函数

博客地址:https://ainyi.com/41

简单的说,sort() 在没有参数时,返回的结果是按升序来排列的。即字符串的Unicode码位点(code point)排序
 [5, 2, 4, 1, 3].sort();
// [1, 2, 3, 4, 5] // 数字字符串也是从小到大
['5', '2', '4', '1', '3'].sort();
// ['1', '2', '3', '4', '5']
如果指明了参数:compare(a, b) ,(a, b 是两个要比较的元素,a 在 b 前面)那么数组会按照该函数的返回值排序
- 如果 compare(a, b) 返回值 < 0 ,a 会被排列到 b 之前,即参数a, b的顺序保存原样;
- 如果 compare(a, b) 返回值 = 0 ,a 和 b 的相对位置不变。(ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守)
- 如果 compare(a, b) 返回值 > 0 ,b 会被排列到 a 之前。即交换参数a, b的顺序
> 记:大于 0 交换顺序
 
 

题目

有如下数据:

 [
{"name":"张三","class":2,"score":64},
{"name":"李四","class":1,"score":80},
{"name":"王五","class":1,"score":90},
{"name":"赵六","class":4,"score":94}
]
 
实现:
* 按照 class 从小到大排列
* 如果 class 相同,则按照 score 从大到小排列
* 如果 class 和 score 都相同,则按照原顺序排列
 function compare(name1, name2) {
// 这里的参数 a, b 是比较的第一个元素 a,第二个元素 b
return function (a, b) {
let fir1 = a[name1];
let sec1 = b[name1];
if (fir1 === sec1) {
let fir2 = a[name2];
let sec2 = b[name2];
if (fir2 === sec2) {
return 0; // 表示位置不变
} else {
return fir2 > sec2 ? -1 : 1; // 表示从大到小排序
}
} else {
return fir1 > sec1 ? 1 : -1; // 表示从小到大排序
}
}
} function sortStudents(students) {
return students.sort(compare('class', 'score'));
} let _students = JSON.parse(`[
{"name":"张三","class":2,"score":64},
{"name":"李四","class":1,"score":80},
{"name":"王五","class":1,"score":90},
{"name":"赵六","class":4,"score":94}]`); let res = sortStudents(_students);
console.log(res);

效果如下:

博客地址:https://ainyi.com/41

javascript sort 函数用法的更多相关文章

  1. Perl Sort函数用法总结和使用实例

    一) sort函数用法 sort LISTsort BLOCK LISTsort SUBNAME LIST sort的用法有如上3种形式.它对LIST进行排序,并返回排序后的列表.假如忽略了SUBNA ...

  2. C++ sort函数用法

    参考文档:http://hi.baidu.com/posinfo/item/dc3e73584c535cc9d2e10c27 C++ sort函数用法 FROM:http://hi.baidu.com ...

  3. 1806最大数 string和sort函数用法

    1.C++自带sort函数用法 sort函数有三个参数: (1)第一个是要排序的数组的起始地址 (2)第二个是结束的地址(最后一位要排序的地址) (3)第三个参数是排序的方法,可以是从大到小也可是从小 ...

  4. sort函数用法

    原文链接:http://blog.csdn.net/csust_acm/article/details/7326418 sort函数的用法 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己 ...

  5. C++ sort函数用法 C中的qsort

    需要包含#include <algorithm>MSDN中的定义: template<class RanIt>     void sort(RanIt first, RanIt ...

  6. C++ sort 函数用法

    MSDN中的定义: template<class RanIt>void sort(RanIt first, RanIt last); //--> 1)template<clas ...

  7. sort函数用法详解

    用于C++中,对给定区间所有元素进行排序.头文件是#include <algorithm> sort函数进行快速排序,时间复杂度为n*log2n,比冒泡之类的要省时不少 Sort函数使用模 ...

  8. c/c++中sort函数用法

    转载自博主:九江镇中https://www.cnblogs.com/jjzzx/ c++标准库里的排序函数的使用方法 I)Sort函数包含在头文件为#include<algorithm>的 ...

  9. C++ STL sort()函数用法

    C++STL提供的在里的排序函数,有以下两种形式 此外还提供有稳定排序版本stable_sort(),用法类似. 第一种形式: template <class RandomAccessItera ...

随机推荐

  1. [zt]C++二维数组讲解、二维数组的声明和初始化

    定义: int *pia = new int[10]; // array of 10 uninitialized ints 此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向 ...

  2. 20175324 2018-2019-2 《Java程序设计》第5周学习总结

    20175324 2018-2019-2 <Java程序设计>第5周学习总结 教材学习内容总结 抽象类和具体类的区别在于抽象类中有抽象方法而具体类中没有.且抽象类不能实例化. 接口:如果一 ...

  3. web端本地与服务端时间校验

    当前校验逻辑: 本地和服务端的时间校验绑定在一个通用请求上,这个请求每七分钟会到服务端请求一次,本地拿到服务器时间后,计算请求服务器来回的时间,最后得出与服务器时间的差值,然后每次new Date() ...

  4. python-list操作

    字符串取值不好取 数组,存在编号,易于取值,(list array) 1.list 定义:name=[]   由中括号定义数组,例如name=['jyj','ws','jyt','js'] 2.lis ...

  5. Centos7-驱动小米WIFI做AP

    参考文章: http://blog.csdn.net/sumang_87/article/details/38168877 http://blog.csdn.net/hktkfly6/article/ ...

  6. JS实现数组去重方法大总结

    js数组根据对象中的元素去重: var arr2 = [ { name: "name1", num: "1" }, { name: "name2&qu ...

  7. [SQL]LeetCode262.行程和用户 | Trips and Users

    SQL架构 Create table If Not Exists Trips (Id )) Create table If Not Exists Users (Users_Id ), Role ENU ...

  8. [Swift]LeetCode696. 计数二进制子串 | Count Binary Substrings

    Give a string s, count the number of non-empty (contiguous) substrings that have the same number of ...

  9. 第五周 IP通信基础回顾

    广播请求,单播响应,ARP IPV4,IP地址32位二进制代码分为8个位一组 路由器每一个接口都是一个网段 ,网段与网段区分看网络地址 同一段链路是同网段 直接广播:主机号全为1 受限广播:全为1 特 ...

  10. js的异步和单线程

    最近,同事之间做技术分享的时候提到了一个问题"js的异步是另开一个线程吗?"当时为此争论不休.会后自己查阅了一些资料,对这个问题进行一个自我的分析与总结,有不同意见的希望可以赐教, ...