我是靠谱客的博主 轻松日记本,最近开发中收集的这篇文章主要介绍JavaScript中sort()对数组数字项函数function(a,b)返回值为a-b即为升序排列的细解,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
为什么sort()对数组中数字排序时,采用
sort(function(a, b) {
return a-b;
}
)
代码即可实现对数组的降序排列?
sort()方法对于数组排序,在其中参数使用了比较函数compareFunction,那么会根据compareFunction的返回值进行排序。具体规定如下:
如果指明了 compareFunction ,那么数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:
- 如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
- 如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
- 如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。
- compareFunction(a, b) 必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。
对于纯数字
sort(function(a, b) {
return a-b;
}
)
等价于
sort(function(a,b){
if(a>b){
return 1;
}
if(a<b){
return -1;
}
return 0;
}
)
都属于升序排列。
具体理解其实就是一个初中数学的分类讨论问题。
(1)当a<b时,a-b<0。即return 一个负值。
根据compareFunction 的行为定义,a 会被排列到 b 之前,是升序排列方式。
(2)当a>b时,a-b>0。即return 一个正值。
根据compareFunction 的行为定义,b 会被排列到 a之前,也是升序排列方式。
(3)当a=b时,a-b=0。即return 零。
根据compareFunction 的行为定义,a 和 b 的相对位置不变。
综合(1)(2)(3)所述,代码
sort(function(a, b) {
return a-b;
}
)
可以满足数字数组的升序排列要求。降序排列可同理推导。
最后
以上就是轻松日记本为你收集整理的JavaScript中sort()对数组数字项函数function(a,b)返回值为a-b即为升序排列的细解的全部内容,希望文章能够帮你解决JavaScript中sort()对数组数字项函数function(a,b)返回值为a-b即为升序排列的细解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复