当前位置: 首页 > 知识库问答 >
问题:

javascript - js中带有大写的数字的对象如何排序?

陶腾
2023-10-04
arr=[{km:'混合一组',rc:10},{km:'混合二组',rc:11},{km:'混合三组',rc:10},{km:'混合二组',rc:10},{km:'混合三组',rc:10},{km:'混合四组',rc:10},,{km:'混合四组',rc:10}]

使用arr.sort((a,b)=>(a.km.localeCompare(b.km, 'zh-Hans-CN'))排序,为何不能按照"混合一组、混合二组、混合三组..."的顺序,而是"混合二组、混合三组、混合四组、混合一组"?

共有2个答案

贺运良
2023-10-04

二(er)排在一(yi)前面, 字母顺序比较

'er' < 'yi' === true

公羊绪
2023-10-04

网上查了一下 localeCompare方法是先转成拼音,然后再进行比较,自然不符合你的要求

可以自己维护一个map 用来给每个km编个号,按这个号去排序

let map = {        '混合一组': 0,        '混合二组': 1,        '混合三组': 2,        '混合四组': 3,        '混合五组': 4,        '混合六组': 5,        '混合七组': 6,        '混合八组': 7,        '混合九组': 8,        '混合十组': 9,    }    let arr = [{        km: '混合一组',        rc: 10    }, {        km: '混合二组',        rc: 11    }, {        km: '混合三组',        rc: 10    }, {        km: '混合二组',        rc: 10    }, {        km: '混合三组',        rc: 10    }, {        km: '混合四组',        rc: 10    }, {        km: '混合四组',        rc: 10    }]    arr.sort((a, b) => {        a = map[a.km]        b = map[b.km]        if (a > b) {            return 1        } else if (a < b) {            return -1        } else {            return 0        }    })
 类似资料:
  • 问题内容: 使用此脚本制作所有继承的etc样式的样式对象。 使用以下命令,第一个警报将正常工作,但是第二个警报则无法正常工作..它将解释为我假设的负号。.调试器说“未捕获的参考错误”。但是,我不能在其周围加上引号,因为它不是字符串。那么如何使用此对象属性? 问题答案: 编辑 查看注释,您将看到对于CSS属性,键符号与许多属性不兼容。因此,使用驼峰式案例密钥表示法是当前的方式 使用键符号而不是点 j

  • 问题内容: 从这个原始问题开始,我将如何对多个字段进行排序? 使用这种略微适应的结构,我该如何对城市(升序)和价格(降序)进行排序? 我喜欢这个事实,而不是给出一个提供通用方法的答案。在计划使用此代码的地方,我将必须对日期以及其他内容进行排序。“灌注”物体的功能似乎很方便,即使有点麻烦。 我试图将这个答案构建成一个很好的通用示例,但是我运气不高。 问题答案: 这是一个“优化”版本。它进行了更多的预

  • 本文向大家介绍js中的数组对象排序分析,包括了js中的数组对象排序分析的使用技巧和注意事项,需要的朋友参考一下 一、普通数组排序     js中用方法sort()为数组排序。sort()方法有一个可选参数,是用来确定元素顺序的函数。如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序。如: 因为字母A、B的ASCII值分别为65、66,而a、b的值分别为97、98,所以上面输出的结

  • 问题内容: 大家好,我在排序时遇到小问题。 我正在收集String类型的一个集合。当我排序时,它给了我期望的错误结果 这是我的代码: 它的排序方式是: Alpha Beta Delta alpha1 theta。 在这里,它可以采用任何类型的字符串,包括大写/小写。但是小写字母的单词稍后出现。 我想要像这样的输出: Alpha alpha1 Beta Delta theta 有一个简单的内置方法吗

  • 我有一个带有两个数组的javascript对象,如图所示, 我试图按排名1,2,3进行排序。。但保留与等级相关的名称。 我应该重新配置我的对象以使排序更容易吗? 我目前正在使用 按顺序排列,但名称不保留。 感谢大家的帮助。谢谢