array.sort()
默认从小到大排序,改变原数组。
回调用每个数组项的toString()转型方法,然后比较得到的字符串,所以100在14前面
[100, 55, 14, 6].sort() // [100, 14, 55, 6]
array.sort(function compare(a, b) { return a - b })
该比较函数接收两个参数,
如果第一个参数应该位于第二个参数的前面,则返回一个负数,
如果两个参数相等,则返回0,
如果第一个参数应位于第二个参数的之后,则返回一个正数
[100, 55, 14, 6].sort(function compare(a, b) { return a - b}) // [6, 14, 55, 100]
let array = [{ year: 2010, month: 10 },
{ year: 2000, month: 10 },
{year: 2000, month: 5}];
array.sort((a, b) => {
if (a.year < b.year || (a.year == b.year && a.month < b.month)) {
return -1; // a比较小,在前面
}
else if (a.year > b.year || (a.year == b.year && a.month > b.month)) {
return 1; // a比较大,在后面
}
else {
return 0; // 不改变位置
}
})
[{ year: 2000, month: 5 }, { year: 2000, month: 10 }, {year: 2010, month: 10}]