我有以下 javascript 数组:
a=[0, "b", 2, 3, 4, 5, 1, 9, 8, "A", "a", 11010]
现在我想对它进行排序,我是这样做的
a.sort()
但是我得到以下信息:
[0, 1, 11010, 2, 3, 4, 5, 8, 9, "A", "a", "b"]
我认为这是错误的,因为 11010 大于 2,应该在 2 之后。 即使我执行以下操作也是如此:
a.sort(function(a,b){return a-b;});
我得到以下信息:
[0, "b", 11010, 2, 3, 4, 1, 8, 9, "A", "a", 5]
有人能解释一下为什么会这样吗?谢谢
最佳答案
问题在于,在排序时,JavaScript 默认将所有数组元素视为字符串。
JavaScript 不像 Haskell 或 Java 那样是类型安全的。这意味着您可以执行各种疯狂的操作,例如添加数字和字符串,或者将字符串与数字进行比较而不会引发错误。
如您在此表中所见,1 的值为 49,小于小写 a
的值 97“1”排在“10110”之前,原因与“a”排在“apple”之前相同
This video涵盖了许多由不同类型操作导致的 JavaScript 的非常意想不到的默认模式。
关于javascript - 排序错误的 array.Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37502867/