javascript - 如何根据多个字符串进行排序

标签 javascript

我有一个对象数组,需要根据两组条件对其进行排序。

let arr = [
  { name: "GMC", postalCode: "23456" },
  { name: "Tesla", postalCode: "12345" },
  { name: "GMC", postalCode: "12345" }
];

我需要首先根据名称排序,然后根据邮政编码排序。所有名称都必须按字母顺序排列,并且在按字母顺序排序时,我需要按邮政编码对具有相同名称的任何名称进行排序。所以结果必须是这样。

[
  { name: "GMC", postalCode: "12345" }
  { name: "GMC", postalCode: "23456" },
  { name: "Tesla", postalCode: "12345" },
];

我觉得这应该很简单,但我不知道我做错了什么。

最佳答案

尝试使用 custom sort function像这样。请注意邮政编码引用前面的加号 - 它是对数字的强制转换,以便我们进行数字比较而不是字符串比较。

arr.sort((a, b) => {
  if (a.name > b.name) return -1;
  if (a.name < b.name) return 1;
  if (a.name == b.name) {
    if ((+a.postalCode) > (+b.postalCode)) return -1;
    if ((+a.postalCode) < (+b.postalCode)) return 1;
  }
  return 0;
});

关于javascript - 如何根据多个字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59379913/

相关文章:

php - 使用 Javascript/PHP 设置图像的时间间隔

javascript - 某些 Android 设备中在线流媒体播放的音频编码问题

javascript - jquery合并两个对象

javascript - 使用 jQuery 动态添加和删除文本框并获取动态文本框的值并将其显示在文本框中

javascript - 从选择框中删除选项值

javascript - 为什么我可以引用一个尚未在 Javascript 中定义的变量?

JavaScript 编码错误

javascript - Javascript 中的凯撒密码

javascript - 多步 jquery div 不显示数据

javascript - 如何防止 smartgwt 污染窗口命名空间?