我想对值进行排序
[101,102,103,101a,101b,104,103a,102a] as [101,101a,101b,102,102a,103,103a,104].
是否可以使用JavaScript默认函数(如果有)或使用Regex。我整天都是这个简单的结构。
有什么建议吗?
先谢谢。
答案 0 :(得分:1)
array.sort()
会为你做的!
答案 1 :(得分:0)
假设这些应该是字符串(你的帖子中缺少引号),那么默认排序(即使用['101', '102', '101b', '101a'].sort()
)应该有效。
它在lexicographical order(即字典顺序)中对字符串进行排序。
当然,如果你有['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.它不适用于空字符串。