javascript 对以数字开头的字符串进行排序不起作用

问题描述 投票:0回答:1

我正在尝试对字符串对象进行排序,这可以与普通排序函数一起使用,但我无法让它工作,因为字符串以数字开头:

例如:

{ value: "10 items", value: "5 items", value: "100 items", value: "20 items" }

我想让它升序,所以就变成了:

5 项目 10 件 20 项目 100 件

我一直在尝试使用:

data.sort((a, b) => a > b ? 1 : -1).map((a) => { return a;}

但是仍然显示为:

10 件商品 100 件 20 项目 5 件商品

javascript sorting
1个回答
0
投票

您需要对字符串的第一部分进行数字比较,因此我们将它们分开,获取第一个元素,将它们转换为 int,然后我们可以比较它。见下图:

let data = [ "10 items", "5 items", "100 items", "20 items" ];
data.sort((a, b) => {
    let x = parseInt(a.split(" ")[0]);
    let y = parseInt(b.split(" ")[0]);
    if (x === y) {
        return 0;
    } else {
        return x > y ? 1 : -1;
    }
});
console.log(data);

请注意,我已经重新解释了您的输入,因为您给出的输入显然是错误的,因为在这种情况下在对象内重复相同的键(

value
)是无效的。

© www.soinside.com 2019 - 2024. All rights reserved.