语法:
sort(起始索引,结束索引, 比较函数)
- 索引参数为可选
- 区间为左闭右开
- 比较函数为可选的
- 数组直接原地排序
- 即不复制新的数组出来
比较函数
助记
- 返回值小于零则顺序不变
梗概
- 规定了比较的对象、比较的方法
参数
- a和b两个参数
- 用来抽象表示:在数组排序的时候,对于任意两个元素,作为参数a和b代入该比较函数
返回值
- 如果
compareFn(a, b)大于 0,b 会被排列到 a 之前。- 即b,a
- 如果
compareFn(a, b)小于 0,那么 a 会被排列到 b 之前;- ⭐即a,b
- 如果
compareFn(a, b)等于 0,a 和 b 的相对位置不变。备注:ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本)
原文
[ MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort|Array.prototype.sort() - JavaScript | MDN]()%20-%20JavaScript%20)
1. 实例:
1. 倒序排序:
var arr4 = [30,10,111,35,1899,50,45]; arr4.sort(function(a,b){ return b - a; }) console.log(arr4);//输出 [1899, 111, 50, 45, 35, 30, 10]按对象中的某个数值进行排序
const items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
];
// sort by value
items.sort((a, b) => a.value - b.value);
// sort by name
items.sort((a, b) => {
const nameA = a.name.toUpperCase(); // ignore upper and lowercase
const nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
});