c#sort升序还是降序_被玩坏的数组排序之sort函数
JavaScript 的数组排序是一个非常常见业务场景
ECMAScript 为数组提供了一个原生的sort
函数,今天我们就来好好看看你对sort
函数究竟了解多少。
首先我们来看一下sort
函数的基本信息
语法:
arr.sort([compareFunction])
参数:
compareFunction [可选]
用于数组排序规则的比较函数。如果不含有该参数,数组元素按照转换字符串的各个字符的Unicode编码顺序进行排序。compareFunction 参数:firstElement 用于比较的第一个元素secondElement 用于比较的第二个元素
返回值:
排序后的数组,返回的是当前数组。
我们先来看看各种排序的应用方式
没有参数的默认排序
// 当没有参数传入时 默认按照数组转成字符串后的结果每一位的Unicode编码进行排序
let arr = [311,43,54,4,40,26,31,33];
arr.sort();
console.log(arr); // [26, 31, 311, 33, 4, 40, 43, 54]
升序排列
let arr = [311,43,54,4,40,26,31,33];
arr.sort((a,b) => a - b);
console.log(arr); // [4, 26, 31, 33, 40, 43, 54, 311]
降序排列
let arr = [311,43,54,4,40,26,31,33];
arr.sort((a,b) => b - a);
console.log(arr); // [311, 54, 43, 40, 33, 31, 26, 4]
好了,看完升序和降序排列以后我们来聊聊排序的规则。
如果添加了 compareFunction
那么数组会按该函数的返回值结果进行排序。
即 compareFunction(a,b)
表示 a,b的比较结果,规则如下:
- 如果返回值结果小于0,则a和b的顺序不变;
- 如果返回值结果等于0,则a和b的顺序不变;
- 如果返回值的结果大于0,a和b会交换位置。
了解了以上排序结果以后我们可以使用sort
方法颠倒数组的顺序(实现类似于reverse方法的效果)
let arr = [311,43,54,4,40,26,31,33];
arr.sort(() => -1);
console.log(arr); // [33, 31, 26, 40, 4, 54, 43, 311]
随机排序
let arr = [311,43,54,4,40,26,31,33];
arr.sort((a,b) => Math.random() - 0.5);
console.log(arr); // 结果为随机排序
按照对象指定的属性值进行升序或降序排列
var arr = [{name: 'zhangsan',age: 20
}, {name: 'lisi',age: 15
}, {name: 'wangwu',age: 17
}, {name: 'zhaoliu',age: 23
}, {name: 'fengqi',age: 31
}, {name: 'xiaoming',age: 11
}];function sortby(prop, rev = true) {// prop 属性名// rev 升序降序 默认升序return function(a, b) {var val1 = a[prop]; var val2 = b[prop]; return rev ? val1 - val2 : val2 - val1;}
}arr.sort(sortby('age')); // 根据age进行升序排列
arr.sort(sortby('age',false)); // 根据age进行降序排列
升序排列结果 :
降序排列结果 :
我们再来看看特别的排序方式
先按奇数升序排列,后按偶数升序排列
let arr = [311,43,54,4,40,26,31,33];
arr.sort((a,b)=>{if(!(a % 2) && b % 2) return 1; // 首先满足条件a为偶数,b为奇数if((a % 2 && b % 2 || !(a % 2) && !(b % 2)) && a > b) return 1; // 判断a b 均为奇数或偶数 且a > b 即可进行升序排序return -1;
});
console.log(arr); // [31, 33, 43, 311, 4, 26, 40, 54]
千锋HTML5学院:如何讲清楚函数防抖?zhuanlan.zhihu.com
千锋HTML5学院:如何讲清楚函数节流?zhuanlan.zhihu.com
千锋HTML5学院:如何讲清楚闭包?zhuanlan.zhihu.com
c#sort升序还是降序_被玩坏的数组排序之sort函数相关推荐
- java列表排序sort_java list(java list排序sort升序、降序)
javalist List是Java中比较常用的调集类,关于List接口有许多完成类,本文就来简略介绍下其间几个重点的完成ArrayList.LinkedList和Vector之间的联系和差异. Li ...
- c#sort升序还是降序_Linux排序命令sort笔记
很多时候Linux需要对文本相对比较规范的文本数据进行排序,这时候可以使用Linux系统下的sort命令进行处理. 语法格式:sort [-ntkr] filename 常用参数: -n 根据数字进行 ...
- c#sort升序还是降序_C#中对数组或集合进行升序或降序排序
在.net framework中,数组和集合都实现了用于排序的方法sort(),数组通过调用Array.Sort(数组名)排序,集合通过调用 集合对象.Sort()方法排序. 默认的排序是使用升序排列 ...
- Matlab进行升序降序,matlab sort()升序和降序
B = sort(A) %沿着输入参量 A的不同维的方向.从小到大重新排列 A中的元素.A 可以是字符串的.实数的.复数的单元数组.对于 A 中完全相同的元素,则按它们在 A 中的先后位置排列在一块: ...
- Collections.sort升序和降序
如果是对List<Integer> 或者 List<String> 这样本身就实现了Comparable接口的泛型集合排序. 如果使用Collections.sort(List ...
- matlab sort descend,matlab sort()升序和降序
B = sort(A) %沿着输入参量 A的不同维的方向.从小到大重新排列 A中的元素.A 可以是字符串的.实数的.复数的单元数组.对于 A 中完全相同的元素,则按它们在 A 中的先后位置排列在一块: ...
- c#sort升序还是降序_c# List的sort排序方法详解
诸如List<T>等泛型集合类,直接提供了sort()方法用于将集合中的元素进行排序. 但是,其前提是集合中存放的是可直接排序的基本类型,如List<int& ...
- java comparator 降序排序_【转】java comparator 升序、降序、倒序从源码角度理解
原文链接:https://blog.csdn.net/u013066244/article/details/78997869 环境 jdk:1.7+ 前言 之前我写过关于comparator的理解,但 ...
- python中对数字降序和升序_该程序查找在Python中按升序或降序排列数字的最低成本...
假设我们有一个称为nums的数字列表,我们必须找到最小成本以任何顺序(升序或降序)对列表进行排序.此处的成本是任何元素的旧值和新值之间的差总和. 因此,如果输入类似于[2,5,4],则输出将为2. 为 ...
最新文章
- [WinError 17] 系统无法将文件移到不同的磁盘驱动器
- 实验一 Part 1 开发环境的配置运行
- apache 二级域名设置
- (转帖)开源容器集群管理系统Kubernetes架构及组件介绍
- 容器和云服务器集群,什么是docker集群与镜像
- centos安装python3.6_Centos安装python3.6和pip步骤记录
- Payload与form表单提交区别
- Fiddler代理配置
- 今年又互联网寒冬了!
- [AGC006F]Blackout
- canvas压缩图片方法
- 关于BOM表的一些事
- 【Photoshop】Photoshop 64Bit与Camera Raw安装包
- iApp免费后台:云A后台
- java学习笔记(10) 第10 章(上) - 面向对象编程(高级部分)
- 全智通A+常见问题汇总解答—A+配件仓库—维修领料—编辑领料单:最后一个仓库无法显示
- 数学史思维导图_8张思维导图揭示:数学应该如何学,才能逆袭为学霸?
- android改微信号码,安卓版微信更新,已支持修改微信号
- JSP项目常见问题解决方案
- 在chromium内不能激活fcitx输入法