使用 sort() 对数组 [3, 15, 8, 29, 102, 22] 进 行排序,输出结果

  • [102, 15, 22, 29, 3, 8]

根据 MDN 上对 Array.sort()的解释,默认的排序方法会将数组元素转换 为字符串,然后比较字符串中字符的 UTF-16 编码顺序来进行排序。所以'102' 会 排在 '15' 前面。

// 正序排列
[3, 15, 8, 29, 102, 22].sort((a, b) => a - b);

// 倒序排列
[3, 15, 8, 29, 102, 22].sort((a, b) => b - a);

如果a-b > 0,则a和b交换位置。当然这样写出来的话是升序排列。如果要降序排则把a-b改成b-a就 可以实现,就是说b大于a,则b和a交换位置,把大的值排前面。a,b的值就是从arr[0],arr[1]开始比较的, 类似冒泡排序。

贡献者: huxiguo