JavaScript必备小知识--数组排序

200 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

JavaScript 是一个'面向对象'的编程语言,要实现各种功能也离不开函数提供的逻辑处理, 用来实现具体的功能, 完成工作中的各种功能任务.

数组排序 有好多好多

数组排序 有好多好多方法, 今天学习简单的基础, 打牢基础, 灵活使用

JavaScript 内置提供了数组排序的方法 array.sort(传入比较数组元素的函数) , 也可以不传入比较元素函数, 这样元素就会按照 ASCII字符顺序升序排列; 如果传入参数比较元素的函数, 就按照这个函数比较元素后进行相邻元素的比较, 然后确定位置

例子: 下面代码使用 .sort() 函数方法对数组进行排序

// 定义一个要排序的数组
const myArr = [1, 20, 7, 12, 3, 5, 6, 8, 9]

// .sort() 不传参数进行比较, 得出的结果会有点意想不到
// 20 排在了 3 的前面, 这里是通过第一个字符进行比较, 如果相同, 则继续下一个字符比较
myArr.sort() // [1, 12, 20  3, 5, 6, 7, 8, 9 ]

如上, 对于数值类型的元素数组进行比较, 这样得到的结果往往不是我们想过要的结果.

因此需要借助元素比较函数传入进去:

  • 比较函数有两个参数, 分别代表每次排序是要比较的两个元素;

  • 函数有个返回值, 如果返回值大于 0 时, 这时候就交换两个数组元素的顺序, 否则不交换位置;

  • 即 函数返回值小于 0 表示升序排列, 大于0 表示降序排列.

// 定义升序函数
function asc(a, b) {
  return a - b
}
myArr.sort(asc) // [1, 3, 5, 6, 7, 8, 9, 12, 20]

// 定义降序函数
function des(a, b) {
  return b - a
}
myArr.sort(des) // [20, 12, 9, 8, 7, 6, 5, 3, 1]