javascript - 如何破译JavaScript中的sort方法?

标签 javascript arrays sorting

<分区>

我想了解 sort() 方法在 JavaScript 中的工作原理,我知道 sort 有一个用于比较的默认函数,但我想传递一个函数并了解它如何处理该函数。

我想按字母顺序对以下数组 ["a", "d", "c", "a", "z", "g"] 进行排序,但是当我使用该方法时arr.sort((a,b) => a>b); 返回相同的数组而不进行排序。

拜托,任何人都可以向我解释一下。

我正在学习 JavaScript 并试图理解数组中的方法,例如 map()reduce()filter() 但我卡在了 sort() 方法中。

let arr = ["a", "d", "c", "a", "z", "g"];
console.log(arr.sort((a,b) => a>b));

结果是["a", "d", "c", "a", "z", "g"],但我想要["a", “a”、“c”、“d”、“g”、“z”]

而且我知道如果我使用不带参数的 sort() 方法,算法会对它进行排序,但我想了解为什么它不能使用参数。

最佳答案

您的函数返回一个 bool 值,但应该返回一个数字。让我们看看当您的 bool 值转换为数字时会发生什么:

console.log((3>2)+0); // returns 1
console.log((3==2)+0); // returns 0
console.log((3<2)+0); // returns 0

因此,当 a == b 和 a > b 时,您最终会得到相同的整数值。

潜在的问题是您需要一个函数来代替返回三个可能的值,0、-1 和 1。

关于javascript - 如何破译JavaScript中的sort方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57779675/

相关文章:

javascript - 为什么我的双引号作为单引号收到?

javascript - 2D Array 或 Map 以在几天内针对工作日和插槽存储值

c - 数组作为函数参数

arrays - 在 Swift 中对 NSDate 对象的一维数组进行排序

java - 删除括号 [ ] 和逗号 Java

javascript - $(...).serializeJSON 不是函数

php - 如何在 JavaScript 中使用值 (PHP)

php - 在 jQuery 中以数组形式接收 input[] 的所有值以发送到 PHP 脚本

sorting - 排序链接列表

javascript - 这个图的等效 Javascript 方程式是什么?