javascript - 具有主值和次值的数组排序

标签 javascript arrays typescript sorting

有没有办法使用主值和辅助值对对象数组进行排序?我的意思是这样的数组:

[
    { primary: 0, secondary: 'a' },
    { primary: 1, secondary: 'a' },
    { primary: 1, secondary: 'b' },
    { primary: 0, secondary: 'b' }
]

将使用主值排序,因此主值为 0 的前两个对象排在第一位,然后值 1 排在第二位,然后将再次按辅助值排序,得到数组成为

[
    { primary: 0, secondary: 'a' },
    { primary: 0, secondary: 'b' },
    { primary: 1, secondary: 'a' },
    { primary: 1, secondary: 'b' }
]

我还没有真正接触过Array.sort()在此之前,我试图找出如何做到这一点,任何帮助将不胜感激!

最佳答案

您可以使用Array#sort .

比较将首先按primary(数字)进行比较,如果相等则按secondary进行比较(使用 String#localeCompare 的字符串)

const arr = [ { primary: 0, secondary: 'a' }, { primary: 1, secondary: 'a' }, { primary: 1, secondary: 'b' }, { primary: 0, secondary: 'b' } ];

const res = arr.sort((a, b) => 
  a.primary - b.primary || a.secondary.localeCompare(b.secondary)
);

console.log(res);

关于javascript - 具有主值和次值的数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70915232/

相关文章:

javascript - JS/jQuery : Re-using a function, 防止多个函数调用

javascript - 如何在我编写的 JavaScript 中重构 Ruby 的 #{} 方法

javascript - 如何将 jQuery 添加到 VuePress 文件中

c++:检查数组的顺序

c - 如何将用户输入传递给其他功能?

typescript - 如何获取泛型类型的属性?

reactjs - useContext 和 useReducer Hooks 不工作。错误 : Cannot read property 'state' of undefined

javascript - jqGrid初始化DropDownList项目

python - 在 2D numpy 数组中有效地找到正值的索引范围

typescript - 如何使用 TypeScript 类型获取字符串的长度?