您的位置:

JavaScript数组排序详解

一、sort()方法简介

sort()方法是JavaScript数组对象的一种排序方法,可以按照指定的排序规则进行排序。sort()方法默认是按照Unicode编码来排序的,这在实际开发中并不好用,所以需要我们自定义排序规则。

二、sort()方法的基本使用

sort()方法的基本使用非常简单,只需要在数组对象上调用该方法即可。sort()方法可以接收一个函数作为参数,该函数用来指定排序规则。下面是一个简单的例子:

const arr = [10, 5, 8, 1, 3];
arr.sort();
console.log(arr); // [1, 10, 3, 5, 8]

通过上述代码可以看出,如果不指定排序规则,默认是按照Unicode编码来排序的。

三、降序排序

如果我们想要按照数字大小进行排序,需要指定排序规则。下面是一个简单的降序排序的例子:

const arr = [10, 5, 8, 1, 3];
arr.sort((a, b) => b - a);
console.log(arr); // [10, 8, 5, 3, 1]

在上述代码中,我们传递了一个函数作为参数,函数使用了箭头函数的形式。函数内部使用了b-a,这表示降序排序。

四、升序排序

如果我们想要实现升序排序,只需将函数改成a-b即可。

const arr = [10, 5, 8, 1, 3];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 3, 5, 8, 10]

五、按照字母顺序排序

除了按照数字大小排序,我们还可以按照字母顺序排序。下面是一个简单的按照字母顺序排序的例子:

const arr = ['banana', 'apple', 'pear', 'orange'];
arr.sort();
console.log(arr); // ['apple', 'banana', 'orange', 'pear']

在上述代码中,我们将字符串存储在数组中,调用sort()方法后按照字母顺序排列。

六、根据对象属性排序

我们也可以根据对象属性进行排序,下面是一个根据人的年龄属性进行排序的例子:

const people = [
  { name: 'Tom', age: 18 },
  { name: 'Jerry', age: 21 },
  { name: 'May', age: 15 }
];

people.sort((a, b) => a.age - b.age);

console.log(people);
// [
//   { name: 'May', age: 15 },
//   { name: 'Tom', age: 18 },
//   { name: 'Jerry', age: 21 }
// ]

在上述代码中,我们将对象存储在数组中,调用sort()方法后按照年龄进行排序。在函数中使用a.age - b.age可以实现升序排序。

七、处理相同的排序结果

有时候我们需要对相同的排序结果做出处理,比如在上述例子中,有可能存在年龄相同的人,我们可能需要根据其他属性进行排序。下面是一个使用多个排序规则的例子:

const people = [
  { name: 'Tom', age: 18, grade: 'A' },
  { name: 'Jerry', age: 21, grade: 'B' },
  { name: 'May', age: 15, grade: 'B' },
  { name: 'John', age: 18, grade: 'C' }
];

people.sort((a, b) => {
  if (a.age !== b.age) {
    return a.age - b.age;
  } else if (a.grade !== b.grade) {
    return a.grade > b.grade ? 1 : -1;
  } else {
    return a.name > b.name ? 1 : -1;
  }
});

console.log(people);
// [
//   { name: 'May', age: 15, grade: 'B' },
//   { name: 'John', age: 18, grade: 'C' },
//   { name: 'Tom', age: 18, grade: 'A' },
//   { name: 'Jerry', age: 21, grade: 'B' }
// ]

在上述代码中,我们先根据年龄进行排序,如果存在相同的年龄,则根据成绩进行排序,如果成绩也相同,则根据姓名进行排序。

八、结语

通过上述的举例,我们可以发现sort()方法有非常大的灵活性,可以根据需求来进行排序。在实际开发中,我们可以根据需要来选择使用哪种排序规则,以达到最优的效果。

javascript简要笔记,JavaScript读书笔记

2022-11-17
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
javascript一句话笔记,javascript基本语句

2022-11-16
python基础学习整理笔记,Python课堂笔记

2022-11-21
印象笔记记录java学习(Java成长笔记)

2022-11-12
发篇java复习笔记(java课程笔记)

2022-11-09
java方法整理笔记(java总结)

2022-11-08
python学习之笔记(python的笔记)

2022-11-10
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
java客户端学习笔记(java开发笔记)

2022-11-14
python方法笔记,python基础教程笔记

2022-11-20
javascript入门笔记1的简单介绍

2022-11-18
重学java笔记,java笔记总结

2022-11-23
我的python学习基础笔记,python自学笔记

2022-11-18
python技巧笔记(python自学笔记)

2022-11-12
java基础知识学习笔记一,Java基础笔记

2022-11-21
java学习笔记(java初学笔记)

2022-11-14
c语言笔记讲解,c语言程序笔记

2022-11-23
java笔记,大学java笔记

2022-11-28