我有一个 var,它接受一个值数组,这些值可以是字母数字或数字,但作为字母数字,问题是基于值应用排序的最有效方法是什么?我希望对字母数字值按字母顺序排序,并在包含数字时按升序排列。
到目前为止我知道
var myArr=['c','a','b']
myArr.sort(); //gives output a,b,c
如果稍后:
myArr=['10','1','2'];
myArr.sort();// gives 1,10,2
但是有没有一种快速的方法来根据数组的内容决定使用哪种排序方法?
提前致谢!
最佳答案
但如果数组元素一致(始终为数字字符串或始终为非数字字符串),您可以测试其中之一,然后做出决定。
myArr.sort(/^\d+$/.test(myArr[0]) ? numericComparison : stringComparison);
...其中stringComparison
可能是:
function stringComparisons(a, b) {
return a.localeCompare(b);
}
...和 numericComparison
将如您的问题所示。
如果它们不一致,那么我认为除了预先扫描数组以查看正在处理的内容,然后进行相应的排序之外,您没有其他选择,因为您无法取消排序中间的操作,所以你不能假设其中一个而中途切换到另一个。
关于Javascript 数组根据值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26714724/