gpt4 book ai didi

javascript - 尝试先按数字排序数组,然后最后按字母排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:56:26 31 4
gpt4 key购买 nike

我正在尝试对数组进行排序。我正在尝试按“itemCommodity”排序。我只需要先按数字排序,然后再按字母排序。例如:

1000A120B3302020J9545000

应显示为:

100020205000A120B330J954

我希望有人能帮我解决这个问题。我有一个我在下面尝试的例子,但它没有按预期工作。

var product_data = [{
"itemCommodity": "1000",
},
{
"itemCommodity": "B330",
},
{
"itemCommodity": "A120",
},
{
"itemCommodity": "J954",
},
{
"itemCommodity": "5000",
},
{
"itemCommodity": "2020",
}]

product_data.sort(function(a, b) {
return a.itemCommodity - b.itemCommodity;
});

请注意,itemCommodity 不是数组中的唯一对象。我有大约 40 个不同的对象,只是想对 itemCommodity 进行排序。

最佳答案

首先对不包含任何字母的元素进行排序。然后 - 比较第一个字符对其余部分进行排序。

var product_data = [{a:"1000"},{a:"B330"},{a:"A120"},{a:"J954"},{a:"5000"},{a:"2020"}],
x = product_data.sort(function(a, b) {
return /[A-Za-z]/.test(a.a) - /[A-Za-z]/.test(b.a) || a.a.charCodeAt(0) - b.a.charCodeAt(0)
});

console.log(x);

如果您同时拥有小写字母和大写字母,您必须将它们全部转换为一个相互大小写的字母,然后对它们进行排序:

var product_data = [{a:"1000"},{a:"B330"},{a:"a120"},{a:"J954"},{a:"5000"},{a:"2020"}],
x = product_data.sort(function(a, b) {
return /[A-Za-z]/.test(a.a) - /[A-Za-z]/.test(b.a) || (a.a.toUpperCase() < b.a.toUpperCase() ? -1 : a.a.toUpperCase() > b.a.toUpperCase() ? 1 : 0)
});

console.log(x);

关于javascript - 尝试先按数字排序数组,然后最后按字母排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42674567/

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