首页 > 解决方案 > 如何基于多个字符串进行排序

问题描述

我有一组对象,需要根据两组标准进行排序。

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" },
];

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

标签: javascript

解决方案


尝试使用这样的自定义排序功能。请注意对邮政编码的引用前面的加号 - 它是一个数字,因此我们进行数字比较而不是字符串比较。

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;
});

推荐阅读