JavaScript 数组排序

2022-07-01 20:57:43 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

JavaScript 数组排序
  • 1、reverse 方法
  • 2、sort 方法


1、reverse 方法

reverse 方法会将数组内的元素反序排序。如:

代码语言:javascript复制
let arr = [1,2,3,4,5,6];

arr.reverse();// arr = [6,5,4,3,2,1]

2、sort 方法

sort 方法默认会将元素当成字符串相互对比,也可以传入自己写的比较函数来决定排序顺序。如:

代码语言:javascript复制
let arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];

arr.sort(); // arr = [1,10,11,12,13,14,15,16,17,18,19,2,20,21,22,23,3,4,5,6,7,8,9]

arr.sort((a,b) => a - b);// arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];

在 b 大于 a 的时候,这段代码就会返回负数(0也默认为负数),反之正数。

如果返回的是负数,则说明 a 比 b 小,这样 sort 就能根据返回值的情况对数组进行排序。

假设有这么个数组使用 sort 排序。

代码语言:javascript复制
let arr = ["Ali","ali",'bob',"Bob"];

arr.sort();

其返回的是 [“Ali”, “Bob”, “ali”, “bob”]

为什么会这样呢?明明 a 在字母表里排在第一位,为何 ali 排在了 Bob 之后呢?

这里要解释一下的是,JavaScript 在做字符串比较的时候,是根据字符对应的 ASCII 码来比较的。例如,A、B、a、b 对应的 ASCII 码分别是 65,66,97,98.

因为 B 的 ASCII 码比 a 小,所以排在了 a 前面。

但相较上面的示例而言,只是明说了数组的对比,如果我们是想要比较对象里的值呢?如:

代码语言:javascript复制
let arr = [
	{ 
    id : 10, name : "xx" },
	{ 
    id : 1, name : "xc" },
	{ 
    id : 50, name : "cc" },
]

arr.sort((a,b) => a.id - b.id);

在这个例子里,我们根据 id 的大小来排序数组顺序,最后得到的结果会是。

代码语言:javascript复制
arr = [
	{ 
    id : 1, name : "xc" },
	{ 
    id : 10, name : "xx" },
	{ 
    id : 50, name : "cc" },
]

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130359.html原文链接:https://javaforall.cn

0 人点赞