这里主要记录一下自己对sort排序中的困惑的点
官方的解释是这酱紫的:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
对于sort()的理解,不管是升序排列还是降序排列,记住一句话: 大于0不改变位置,小于0改变位置
对sort的用法,这里分为传参数和不传参数
1. 不传参数(不传参数,默认会按照UniCode排序)
var months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
// expected output: Array ["Dec", "Feb", "Jan", "March"
2.传参数的情况
升序:
function(a, b) {
return a - b; //若return返回值大于0(即a>b),则a,b交换位置
}
降序:
function (a, b) {
return b - a; //若return返回值大于零(即b>a),则a,b交换位置
}
升序案例:
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic' },
{ name: 'Zeros', value: 37 }
];
// sort by value
items.sort(function (a, b) {
return (a.value - b.value)
});