原文:
Sort Alphabetically in JavaScript – How to Order by Name in JS
有时你可能有一个单词数组,你想按字母顺序(从 a-z)对每个单词进行排序。或者你可能有一个包含用户信息(包括名字)的对象数组,例如,你想按照用户的名字来排序。
我们可以在 JavaScript 中通过直接使用
sort()
方法或使用比较函数来实现这个目的。
如果你很着急的话,这里有两种方法:
// 对一个名字数组进行排序
names.sort();
// 通过 name 对一个对象数组进行排序
users.sort(function (a, b) {
if (a.name < b.name) {
return -1;
if (a.name > b.name) {
return 1;
return 0;
现在让我们来了解一下我们是如何得出这两种解决方案的。
如何按字母顺序对一个名字数组进行排序
假设我们有一个名字的数组:
let names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
我们可以使用
sort()
方法按字母顺序对这些名字进行排序:
let sortedNames = names.sort();
console.log(sortedNames);
这将返回一个按字母排序的名字数组:
["Alex Doe","Elon Doe","John Doe","Peter Doe"]
注意:
当一些名字首字母大写,而其他名字首字母小写时,那么输出将是不正确的,因为
sort()
方法将大写字母放在小写字母之前:
let names = ["John Doe", "alex Doe", "peter Doe", "Elon Doe"];
let sortedNames = names.sort();
console.log(sortedNames); // ["Elon Doe","John Doe","alex Doe","peter Doe"]
所以你需要确保这些词的大小写都是一样的,否则它就不能按照我们的需求按字母顺序返回名字。
如何在 JavaScript 中按姓名的字母顺序排列
在现实场景中,我们可能有一个用户数组,每个用户的信息都在一个对象中。这些信息可以是任何与用户的名字有关的信息,比如说:
let users = [
name: "John Doe",
age: 17
name: "Elon Doe",
age: 27
name: "Alex Doe",
age: 14
看一下上面的对象,之前我们直接在数组上应用
sort()
方法的方式将不会起作用。相反,它将抛出相同的数组,但项目不会按照我们想要的顺序排列。
我们将在使用
sort()
方法的同时使用比较函数来按名字对这个用户数组进行排序。
我们将使用比较函数来定义一个替代的排序顺序。根据参数的不同,它返回一个负值、零值或正值:
语法:
function(a, b){return a - b}
当我们把这个比较函数传入
sort()
方法时,它根据我们设定的条件对每个值进行比较,然后根据返回的值对每个名字进行排序(负数、零、正数)。
-
如果结果是负的,
a
被排序在
b
之前。
-
如果结果是正数,则
b
被排序在
a
之前。
-
如果结果是
0
,两个值的排序顺序不做任何改变。
使用上面的例子,我们现在可以这样将比较函数和
sort()
方法一起使用:
users.sort(function (a, b) {
if (a.name < b.name) {
return -1;
if (a.name > b.name) {
return 1;
return 0;
console.log(users);
上面的代码对每个名字进行比较。如果是大于,它返回 1。如果是小于,则返回 -1。返回的值用于按字母顺序排列我们的数组的值:
[
name: "Alex Doe",
age: 14
name: "Elon Doe",
age: 27
name: "John Doe",
age: 17
注意:
就像我们之前看到的,这总是根据字母的大小写运行,并将大写字母排在小写字母之前。
let users = [
name: "alex Doe",
age: 14
name: "Elon Doe",
age: 27
name: "John Doe",
age: 17
users.sort(function (a, b) {
if (a.name < b.name) {
return -1;
if (a.name > b.name) {
return 1;
return 0;
console.log(users);
输出:
[
name: "Elon Doe",
age: 27
name: "John Doe",
age: 17
name: "alex Doe",
age: 14
总结
在这篇文章中,你已经学会了如何在两种可能的情况下使用
sort()
方法按字母顺序排列数组。
在名字有不同字母大小写的情况下,最好在使用
sort()
方法之前先将它们转换为特定的字母大小写。
Happy coding!
freeCodeCamp 是捐助者支持的 501(c)(3) 条款下具有免税资格的慈善组织(税号:82-0779546)。
我们的使命:帮助人们免费学习编程。我们通过创建成千上万的视频、文章和交互式编程课程——所有内容向公众免费开放——来实现这一目标。
所有给 freeCodeCamp 的捐款都将用于我们的教育项目,购买服务器和其他服务,以及聘用员工。
你可以
点击此处免税捐款
。
about:blank 是什么意思
打开 .dat 文件
Node 最新版本
反恶意软件服务
Windows10 产品密钥
Git 切换分支
AppData 文件夹
Windows 10 屏幕亮度
JSON 注释
MongoDB Atlas 教程
Python 字符串转数字
Git 命令
更新 NPM 依赖
谷歌恐龙游戏
CSS 使用 SVG 图片
Python 获取时间
Git Clone 指定分支
JS 字符串反转
React 个人作品网站
媒体查询范围
forEach 遍历数组
撤销 Git Add
OSI 七层网络
Event Loop 执行顺序
CMD 删除文件
Git 删除分支
HTML 表格代码
Nano 怎么保存退出
HTML5 模板