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/

相关文章:

angular - 所选项目不会改变

javascript - 如何从 Html Action Link 控件捕获用户输入的文本框传递多个值并将其发送到 Action 方法?

php - 创建自定义 WHERE 子句以过滤数据表

c - 如何通过计算值出现的次数并将其打印在该值旁边来创建一个新数组?

javascript数组比较循环多次

javascript - Typescript 接口(interface)根据逻辑设置值

javascript - 如何正确删除多个事件监听器?

javascript - 将对象数组转换为对象

javascript - d3.json 方法不返回我的数据数组

arrays - 仅在 freemarker 中创建 "object"(无 JAVA 等)?