我有一个对象数组,需要根据两组条件对其进行排序。
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/