有时您可能有一个单词数组,您希望按字母顺序(从 az 开始)对每个单词进行排序。或者,您可能有一个包含用户信息(包括名称)的对象数组,例如,您希望在其中按用户名称对用户进行排序。

我们可以在 JavaScript 中sort()直接使用该方法或使用 compare 函数来做到这一点。

如果你赶时间,这里有两种方法:

// order an array of names
names.sort();// order an array of objects with 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()方法与 compare 函数一起按名称对这个用户数组进行排序。

我们将使用比较函数来定义替代排序顺序。它根据参数返回负值、零值或正值:

句法:

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。否则,它返回 0。返回的值用于按字母顺序排列数组的值:

[{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()方法。

在 JavaScript 中按字母顺序排序 - 如何在 JS 中按名称排序相关推荐

  1. 假设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字母构成。 它们在电文中出现的频度分别为{0.31,0.16,0.10,0.08,0.11,0.20,0.04}。【MOOC答案】

    目   录 1.题目 2.答案and详细题解过程 1)为这7个字母设计哈夫曼编码: 1.1.答案 1.2.详细题解过程 2)为这7个字母设计等长编码,至少需要几位二进制数?[3位] 2.1.答案 2. ...

  2. 假设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字母构成。它们在电文中出现的频度分别为

    假设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字母构成.它们在电文中出现的频度分别为{0.31,0.16,0.10,0.08,0.11,0.20,0.04}, 1)为这7个字母设计哈夫曼 ...

  3. 如何在JS中应用正则表达式

    背景:在之前的随笔中写过C#中如何使用正则表达式,这篇随笔主要讲如何在js中应用正则表达式 如下代码: 1 $("#zhengze").click(function () { 2 ...

  4. html中写自增数字,WPS word中数字怎么自增 如何在word中设置数字的千位分隔符

    选中某行,列或者某一部分,选择菜单栏的"行和列"->"填充"选项,选择序列选项. 在弹出的窗口中设置你需要的选项. WPS文字怎样自动增加数字 如何在WP ...

  5. Java中按字母顺序对字符串字符进行排序的4种不同方法

    介绍 : 有时我们需要按字母顺序对字符串中的所有字符进行排序.由于String在Java中是不可变的,因此它将创建一个不同的字符串变量.例如,字符串" albert "在排序后将变 ...

  6. java中按字母排序_如何在Java中按字母顺序对字符串进行排序

    使用toCharArray()方法 该类的toCharArray()方法将字符串转换为字符数组并返回它. 按字母顺序对字符串值进行排序获取所需的字符串. 使用toCharArray()方法将给定的字符 ...

  7. python中字母大小顺序_Python中的字母顺序

    好吧,我有关于以下代码的问题:s = "wxyabcd" myString = s[0] longest = s[0] for i in range(1, len(s)): if ...

  8. linux ls 命令排序,如何在Linux中使用ls命令按大小对所有文件进行排序

    ls命令是列出目录内容的最流行且非常有用的命令. 在本文中,我们将解释如何使用ls sort选项按大小列出目录内容. 1)按大小列出目录中的文件(排序) 要列出具有大小排序的特定目录的内容,我们将使用 ...

  9. python输入一个英文句子、翻转句子中单词的顺序_ODOA(1) 翻转句子中单词的顺序(C语言实现)...

    动动手才发现自己现在的在C/C++方向的几个问题: 对自己的入门语言C语言变得非常陌生 编程的思维固定在找既有的方法,主要原因是python写多了,基本上所有常见的问题,都有现成的方法,让自己变得懒惰 ...

最新文章

  1. activeMQ - 消息重发策略和DLQ死信队列
  2. 中国公有云三巨头,同时支持Rancher Kubernetes平台
  3. android 禁用dlsym_Android 7.0 dlopen 函数分析
  4. java字符串是不是整数的函数_java判断字符串是否为整数的方法
  5. httpd 分页_更改 Apache httpd.conf 配置文件
  6. Qt5.12安装错误提示:C:\Qt5.12.11\vcredist\vcredist_msvc2019_x86.exe /norestart /q
  7. hibernate详细教程(入门到熟练)
  8. 如何识别图片中的文字?三种方法轻松搞定
  9. ENSP直连路由和静态路由配置(含路由表结构分析)
  10. 计算机网络(自顶向下方法)-应用层
  11. 电脑屏幕亮度,细说电脑屏幕亮度怎么调
  12. printf 函数使用 可变参数函数实现原理
  13. No Launcher activity found! The launch will only sync the application package on the device!
  14. 送书 | 知乎阅读300w+的生信学习指南(更新版)
  15. JS和CSS的引入/写入位置应该放在哪里?
  16. Qt Linguist翻译 介绍
  17. 说说恶意软件吧~~Malware 分析
  18. java设计一个排队叫号系统_一个简易的叫号系统实现方案
  19. 计算机监控如何控制调速器的,水电厂计算机监控系统功率调节的控制方式探索.doc...
  20. 概率论与数理统计(上)

热门文章

  1. Object.keys、Object.values、Object.entries详解
  2. (原)神卓互联内网穿透远程桌面方法
  3. cindy POSA2读书笔记(二)
  4. 马克·扎克伯格:一场绝非偶然的传奇
  5. 西北乱跑娃 --- bottle框架部署pytorch模型
  6. 通过TCP各个状态,可以排除和定位网络或系统故障
  7. newifimini出厂固件_newifi mini旗舰版固件
  8. 计算机网络的标准和单位
  9. 项目经理如何做好项目数据分析?
  10. 外卖返利小程序系统公众号外卖饿了么美团cps返利小程序分销系统