javascript - 排序错误的 array.Javascript

标签 javascript arrays sorting

我有以下 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 那样是类型安全的。这意味着您可以执行各种疯狂的操作,例如添加数字和字符串,或者将字符串与数字进行比较而不会引发错误。

UTF-8 Character Code Table

如您在此表中所见,1 的值为 49,小于小写 a

的值 97

“1”排在“10110”之前,原因与“a”排在“apple”之前相同


This video涵盖了许多由不同类型操作导致的 JavaScript 的非常意想不到的默认模式。

关于javascript - 排序错误的 array.Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37502867/

相关文章:

arrays - cakephp 将树放入数组中

iphone - 使用自定义类的实例对数组进行排序

javascript - 调用对象内的另一个函数

javascript - 如何在 reactjs 中使用 pug 模板引擎

javascript - 移动 HTML 页面的 HTML 幻灯片菜单?

javascript - 如何过滤/搜索 HTML 表格中的列?

Javascript-如何突出显示与 HTML 中的表单用户输入文本区域匹配的元素数组

java - 数组可以包含整数和 float 吗

java - 如何识别属于最大堆的元素和属于最小堆的元素?

java - 如何根据日期对 hashmap<String , String> 的 ArrayList 的数据进行排序