gpt4 book ai didi

javascript - 如何按字符串值对数组中的对象数组进行排序?

转载 作者:行者123 更新时间:2023-12-02 14:21:39 25 4
gpt4 key购买 nike

我有一个对象数组。

在每个对象中,我的目标是一个名为“myLevel”的属性。此属性的值在以下字符串语法中有所不同:

 [
{myLevel : 'CAT I #4'},
{myLevel : 'CAT I #6'},
{myLevel : 'CAT I #2'},
{myLevel : 'CAT II #15'},
{myLevel : 'CAT III #1'},
{myLevel : 'CAT II #7'},

]

如何对数组进行排序,以便对象按升序重新排列,如下所示:

[
{myLevel : 'CAT I #2'},
{myLevel : 'CAT I #4'},
{myLevel : 'CAT I #6'},
{myLevel : 'CAT II #7'},
{myLevel : 'CAT II #15'},
{myLevel : 'CAT III #1'}
]

最佳答案

使用正则表达式来匹配各个部分,然后单独检查这些部分

var arr = [
{myLevel : "CAT I #4"},
{myLevel : "CAT I #6"},
{myLevel : "CAT I #2"},
{myLevel : "CAT II #15"},
{myLevel : "CAT III #1"},
{myLevel : "CAT II #7"}
];

var sorted = arr.sort(function(a,b){
var left = a.myLevel.match(/CAT (I+) #([0-9]+)/);
var right = b.myLevel.match(/CAT (I+) #([0-9]+)/);
if(left[1].length==right[1].length){
return left[2]-right[2];
}else return left[1].length-right[1].length;
});

匹配返回

[0] whole matched string
[1] all the `I`'s
[2] the number after the #

第一个if是检查I计数是否相同,如果相同我们需要通过数字来检查。

如果我们需要根据数字进行核对,我们只需要返回它们之间的差值即可。

如果我们不需要通过数字来检查,我们只需要返回I的数量之间的差异

关于javascript - 如何按字符串值对数组中的对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38602021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com