sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串UniCode码。因为排序是按照字符串UniCode码的顺序进行排序的,所以首先应该把数组元素都转化成字符串(如有必要),以便进行比较。
语法:arrayObject.sort(sortby);
参数sortby 可选,用来规定排序的顺序,但必须是函数。
//1.字符串
var arr=["neal","love","play","basketball"]
var result=arr.sort()
console.log(result);
//[ 'basketball', 'love', 'neal', 'play' ]
var arr2=["123","31","0123","987"]
var result2=arr2.sort()
console.log(result2)
//[ '0123', '123', '31', '987' ]
纳尼,这次排序似乎没有得到想要的结果。。。。。。
如果要得到自己想要的结果,不管是升序还是降序,就需要提供比较函数了。该函数比较两个值的大小,然后返回一个用于说明这两个值的相对顺序的数字。
比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,即 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。
若 a 等于 b,则返回 0。
若 a 大于 b, 即 a - b 大于零,则返回一个大于零的值,数组将按照降序排列。
//2.升序排列
var arr2=["123","31","333","987"]
var result=arr2.sort(sortby)
function sortby(a,b){
console.log("a,b : "+a+","+b)
return a-b
}
console.log(result)
// a,b : 123,31
// a,b : 123,333
// a,b : 333,987
// [ '31', '123', '333', '987' ]
根据数组对象中的某个属性值进行排序
var arr=[
{
"name":"neal",
"age":22
},{
"name":"beast",
"age":23
},{
"name":"mouse",
"age":21
}
]
var result=arr.sort(sortby("age"))
function sortby(props){
return function(a,b){
var val1=a[props]
var val2=b[props]
return val1-val2
}
}
console.log(result)
// [ { name: 'mouse', age: 21 },
// { name: 'neal', age: 22 },
// { name: 'beast', age: 23 } ]