JavaScript:数组的sort()排序(遇到负数时如何处理)
Posted nini-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript:数组的sort()排序(遇到负数时如何处理)相关的知识,希望对你有一定的参考价值。
Sort()语法:
/** * sortFun:可选,设置排序的逻辑,必须是函数 */ arrayObject.sort(sortFun)
注:在使用sort()函数时,如果不是传函数参数的话,会以默认的方式进行排序,即按照字符编码的顺序进行排序。
例如:
var arr = [57,34,2,5,7,9,65,857] console.log(arr.sort());
// 打印结果为[ 2, 34, 5, 57, 65, 7, 857, 9 ]
由此可见按照我们理解的数字大小来看排序就乱了
如何解决呢?
只需要往sort()函数里面传参就可以了,例如:
// 升序 function ascOrder (a, b) return a - b var arr = [3,4,6,76,323,21,35,54]; arr.sort(ascOrder); // 结果:[ 3, 4, 6, 21, 35, 54, 76, 323 ] // 降序 function desOrder(a, b) return b - a var arr = [3,4,6,76,323,21,35,54]; arr.sort(desOrder);
// 结果:[ 323, 76, 54, 35, 21, 6, 4, 3]
在上述代码中,a,b两个参数中若a<b,在排序后的数组中a应当在b之前,返回一个小于0的值;若a=b,则返回0;若a大于b,则返回一个大于0的值。
自己编写JavaScript的sort函数
在平常开发中我们经常会遇到对数组进行排序的场景,js给我们提供了sort方法可以对数组元素进行排序,默认是按ASCII字母表顺序排序,请看下面例子:
var a = [1, 3, 2, 4];
var b = [‘b‘, ‘a‘, ‘c‘, ‘d‘]; a.sort();
b.sort(); console.log(a); // [1, 2, 3, 4]
console.log(b); // [‘a‘, ‘b‘, ‘c‘, ‘d‘]
但有些时候我们需要自己定义排序要求,这时候我们就可以给sort函数传递一个函数,用来自定义排序规则,请看下面例子:
var a = [1, 3, 2, 4]; a.sort(function compare(a, b) { return b - a; }); console.log(a); // [4, 3, 2, 1]
这是一个简单的自定义例子,把数组进行了降序排序,对于传给sort方法的函数function compare(a,b){...} ,遵循这样一个规则:若返回正数,则说明a和b需要交换,否则不交换。基于这个准则我们就可以根据自己需求来确定交不交换。请看下面代码:
function compare(a, b) { if () { //如果不想交换,则返回-1 return -1; } return 1; //返回1表示想交换 }
这样的话a和b交换还是不交换完全取决于你自己的逻辑。 你说了算嘻嘻!!
如果有什么不正确的地方,还请各位大腿指正!!!!
以上是关于JavaScript:数组的sort()排序(遇到负数时如何处理)的主要内容,如果未能解决你的问题,请参考以下文章