JavaScript对数组中的字母数字字符串进行排序

JavaScript对数组中的字母数字字符串进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个排序函数,可以按字母顺序对码名(即arte字符串)进行排序 const sortList = (list, col) => { return list.sort((a, b) => { if (!b[col] && !a[col]) return 0 if (!a[col]) return -1 if (!b[col]) return

我有一个排序函数,可以按字母顺序对码名(即arte字符串)进行排序

const sortList = (list, col) => {
    return list.sort((a, b) => {
        if (!b[col] && !a[col])
            return 0
        if (!a[col])
            return -1
        if (!b[col])
            return 1
        if (a[col] < b[col])
            return -1
        if (a[col] > b[col])
            return 1
        else return 0
    })
};
const sortList=(列表,列)=>{
返回列表。排序((a,b)=>{
如果(!b[col]&&!a[col])
返回0
如果(!a[col])
返回-1
如果(!b[col])
返回1
if(a[col]b[col])
返回1
否则返回0
})
};
但有时,码中有数字,排序如下:

我曾尝试将attr添加到a[col]和b[col],但它产生了更奇怪的结果。
有没有办法避免这种行为?

你能举例说明这些场地的其他命名方式吗?现在,我建议
ParseInt(a[col].substr(5))
只获取数字,但我猜这不会解决您的问题。您可以删除最后2个
if
if else
块,并将其替换为:
返回a[col]。localeCompare(b[col],未定义,{numeric:true})
@adiga谢谢,这几乎奏效了。我认为它不支持数字。我也有,请添加
list
col
属性的示例数据。您可以使用
String(a[col])
String(b[col])
。或
a[col].toString()