JS

语法:

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;
});