本文主要是介绍【JavaScript】将数组中的数字按照从小到大排序(sort),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如果在 sort()方法中带参,我们就可以自定义排序规则。具体做法如下:
我们可以在 sort()的参数中添加一个回调函数,来指定排序规则。回调函数中需要定义两个形参,JS将会分别使用数组中的元素作为实参去调用回调函数。
JS根据回调函数的返回值来决定元素的排序:(重要)
-
如果返回一个大于 0 的值,则元素会交换位置
-
如果返回一个小于 0 的值,则不交换位置。
-
如果返回一个等于 0 的值,则认为两个元素相等,则不交换位置
将数组中的数字按照从小到大排序
写法 1:
var arr = [5, 2, 11, 3, 4, 1];// 自定义排序规则
var result = arr.sort(function (a, b) {if (a > b) {// 如果 a 大于 b,则交换 a 和 b 的位置return 1;} else if (a < b) {// 如果 a 小于 b,则位置不变return -1;} else {// 如果 a 等于 b,则位置不变return 0;}
});console.log('arr =' + JSON.stringify(arr));
console.log('result =' + JSON.stringify(result));
打印结果:
arr = [1, 2, 3, 4, 5, 11];
result = [1, 2, 3, 4, 5, 11];
上方代码的写法太啰嗦了,其实也可以简化为如下写法:
写法 2:(ES5写法)
var arr = [5, 2, 11, 3, 4, 1];// 自定义排序规则
var result = arr.sort(function (a, b) {return a - b; // 升序排列// return b - a; // 降序排列
});console.log('arr =' + JSON.stringify(arr));
console.log('result =' + JSON.stringify(result));
打印结果不变。
上方代码还可以写成 ES6 的形式,也就是将 function 改为箭头函数,其写法如下。
写法 3:(ES6写法,箭头函数)
let arr = [5, 2, 11, 3, 4, 1];// 自定义排序规则
let result = arr.sort((a, b) => {return a - b; // 升序排列
});console.log('arr =' + JSON.stringify(arr));
console.log('result =' + JSON.stringify(result));
上方代码,因为函数体内只有一句话,所以可以去掉 return 语句,继续简化为如下写法。
写法 4:(推荐写法)
let arr = [5, 2, 11, 3, 4, 1];// 自定义排序规则:升序排列
let result = arr.sort((a, b) => a - b);console.log('arr =' + JSON.stringify(arr));
console.log('result =' + JSON.stringify(result));
上面的各种写法中,写法 4 是我们在实战开发中用得最多的。
这篇关于【JavaScript】将数组中的数字按照从小到大排序(sort)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!