在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想要的排序顺序:)