Javascript 数组根据值排序

标签 javascript arrays sorting

我有一个 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/

相关文章:

javascript - 如何使用 JavaScript 访问 asp.net 母版页中的元素 ID?

c++ - 如何在 C++ 中将输入字符串转换为数组?

java - 快速排序不对长度为 2 的数组进行排序

algorithm - 面试算法 : find two largest elements in array of size n

python - 根据值列表在 python 中重新排序字典

javascript - 如何收集 XMLHttpRequest 的实例?

c# - 如何在javascript中访问动态创建的对象?

javascript - 为什么我的函数没有从 fetch 中获取结果?

c - 数组不溢出(C语言)

javascript - 如何将此字符串转换为多维 JavaScript 数组