Skip to content

[3, 15, 8, 29, 102, 22].sort(),结果是多少,为什么?

Posted on:2024年8月14日 at 23:50

对于数组 [3, 15, 8, 29, 102, 22] 使用 .sort() 方法,结果是 [102, 15, 22, 29, 3, 8]

原因

Array.prototype.sort() 方法默认是按字典顺序(即字符串的顺序)对数组元素进行排序的。它会将数组中的元素转换为字符串,然后按字典顺序比较这些字符串。

在这个例子中,排序过程如下:

  1. 转换为字符串

    • 3 -> "3"
    • 15 -> "15"
    • 8 -> "8"
    • 29 -> "29"
    • 102 -> "102"
    • 22 -> "22"
  2. 按字典顺序比较字符串

    • "102" > "15"
    • "15" > "22"
    • "22" > "29"
    • "29" > "3"
    • "3" > "8"

因此,排序后的结果是 [102, 15, 22, 29, 3, 8]。如果要按数值排序,需要传递一个比较函数给 .sort(),例如:

[3, 15, 8, 29, 102, 22].sort((a, b) => a - b);

这将返回 [3, 8, 15, 22, 29, 102]

原文转自:https://fe.ecool.fun/topic/5102cc7e-824a-4ecb-bcab-e04a5f32d522