Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中对数字和带有字母(后缀)的数字进行排序_Javascript_Regex_Sorting - Fatal编程技术网

在Javascript中对数字和带有字母(后缀)的数字进行排序

在Javascript中对数字和带有字母(后缀)的数字进行排序,javascript,regex,sorting,Javascript,Regex,Sorting,我想对这些值进行排序 [101,102,103,101a,101b,104,103a,102a] as [101,101a,101b,102,102a,103,103a,104]. 是否可以使用JavaScript默认函数(如果有)或使用正则表达式。我一整天都在用这个简单的东西 有什么建议吗 提前感谢。array.sort()会帮您完成的 假设这些应该是字符串(您的文章中缺少引号),那么默认排序(即,使用['101','102','101b','101a'].sort())应该可以工作

我想对这些值进行排序

    [101,102,103,101a,101b,104,103a,102a] as [101,101a,101b,102,102a,103,103a,104].
是否可以使用JavaScript默认函数(如果有)或使用正则表达式。我一整天都在用这个简单的东西

有什么建议吗

提前感谢。

array.sort()
会帮您完成的


假设这些应该是字符串(您的文章中缺少引号),那么默认排序(即,使用
['101','102','101b','101a'].sort()
)应该可以工作

它按(又名字典顺序)对字符串进行排序

当然,如果您有
['10','20','100']
,它将失败。您可以选择使用零作为前缀(即,
['010',020',100']
)或提供自定义比较器。如果它总是一个数字,那么一个字母:

['100b', '100a', '10', '20'].sort(function(item1, item2) {
    var firstInt = parseInt(item1, 10);
    var secondInt = parseInt(item2, 10);
    if(firstInt != secondInt) return firstInt - secondInt;
    else return item1.charCodeAt(item1.length - 1) - item2.charCodeAt(item2.length - 1);
});

这假设只有一个尾随字符。它利用了一个事实,即如果字符串是相同的数字(没有字符),那么else语句将很容易返回0。它不能处理空字符串。

首先,它应该是一个数组字符串,如
['101',…,'101a']
。你可以在那个阵列上使用
.sort()
,哈哈,我没找到。感谢您的回复。可能值得注意的是,它将要求数字部分始终保持相同的长度(例如3位数字),这取决于courseYup的要求,也取决于OP想要的排序顺序:)