sort() 方法用于对数组的元素进行排序。
arrayObject.sort(sortby)
- sortby:可选。规定排序顺序。必须是函数
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
实现是对数字进行大小排序
var arr = [100,21,79,102,65,37];
arr.sort(sortNumber)
function sortNumber(a,b) {
// 安装升序排列
return a - b
// 按照降序排列 return b - a
}
根据数组对象中的某个属性值进行排序
var arr = [
{name:'lixi',age:10},
{name:'yue',age:18},
{name:'hui',age:8}
];
arr.sort(compare('age'))
function compare(property){
return function(a,b){
var value1 = a[property];
var value2 = b[property];
return value1 - value2;
}
}
根据参数不同,来确定是升序排列,还是降序排序
arr.sort(sortBy('age',false))
function sortBy(attr,rev){
//第二个参数没有传递 默认升序排列
if(rev == undefined){
rev = 1;
}else{
rev = (rev) ? 1 : -1;
}
return function(a,b){
a = a[attr];
b = b[attr];
if(a < b){
return rev * -1;
}
if(a > b){
return rev * 1;
}
return 0;
}
}