https:///article/
sort()方法主要是用于对数组进行排序,默认情况下该方法是将数组元素转换成字符串,然后按照ASC码进行排序,这个大家都能理解,但如果数组元素是一个Object呢,转不了字符串,难道不能进行排序?答案当然是否定的,那么我们就来详细探讨下sort()方法的使用
语法:(sortby);参数sortby可选。规定排序顺序。必须是函数。
sort() 方法用于对数组的元素进行排序。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,
首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
function sortNumber(a, b){
return a - b; //这里返回的是他们的差值,如果是大于0的值,就会将b排在前面,如果小于0,
就会将a排在前面,如果是0的话,就随便。(冒泡排序法!!)
}
比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
总结: 升序 -> return
a - b; 降序-> return
b - a;
// 需要升序或者降序则需要传入一个函数参数
var arr = [3,2,3,34,12,23,234,84,9];
(function (a, b) {
return a - b;
});
// 结果:2,3,3,9,12,23,34,84,234
// 降序
var arr = [3,2,3,34,12,23,234,84,9];
(function (a, b) {
return b - a;
});
// 按name排列
var users =[
{ "name": "has", "age": 17, "height": 165 },
{ "name": "saf", "age": 20, "height": 172 },
{ "name": "gngh", "age": 45, "height": 182 },
{ "name": "yjerw", "age": 42, "height": 156 },
{ "name": "cvb", "age": 22, "height": 176 },
{ "name": "wetty", "age": 32, "height": 178 },
{ "name": "aDNY", "age": 34, "height": 175 }
]
var (function (a, b) {
return - ;
});
上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
返回:[1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (没有问题)