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" },
];
我觉得这应该很简单,但我不知道我做错了什么。
解决方案
尝试使用这样的自定义排序功能。请注意对邮政编码的引用前面的加号 - 它是一个数字,因此我们进行数字比较而不是字符串比较。
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;
});
推荐阅读
- xcode - 寻找匹配的'''时出现意外的EOF(Xcode 11.1)
- java - 如何使组合框多选但只存储它?这是一个代码有人可以缩短吗?
- php - 在@charset utf-8 之前添加了额外的空间
- python - 使用 Selenium 选择国家和州。收到错误
- python - 为什么删除函数时来自弱引用库的引用没有死?
- r - purrr 迭代或循环所有列(类似于计算和求和或减去变量的函数)
- javascript - 点击不同链接时如何打开不同的视频?
- r - 关闭 h2o 后访问 h2o 模型的问题
- arrays - 在数据库中添加项目的无序列表?
- node.js - 将参数传递给mysql连接字符串