Javascript:_.sortBy和arr.sort有什么区别?

Javascript: What is the difference between _.sortBy and arr.sort?

我正在尝试实现我自己的 _.sortBy 版本,但我无法弄清楚 _.sortBy 和 Javascript 数组实例内置的排序之间的区别。他们似乎以不同的方式评估可选的回调参数。我不确定他们为什么以及如何以不同的方式评估回调参数。示例:

arr = [1, 2, 3, 4, 5, 6]
>>>[1, 2, 3, 4, 5, 6]
_.sortBy(arr, function(num){ return Math.sin(num); });
>>>[5, 4, 6, 3, 1, 2]
arr.sort(function(num){ return Math.sin(num);})
>>>[4, 5, 6, 3, 2, 1]

我对与此主题相关的所有搜索都在数据库类别中呈现结果。我在 google 或 SO 上找不到这个答案。任何帮助将不胜感激。提前致谢!

-Chopper Draw Lion4

_.sortBy 采用 returns 作为排序依据的值的函数。
Array.sort 取而代之的是 比较函数

不同之处在于 _.sortBy 中的回调函数只告诉 sortBy 要排序的值(因此得名)。使用 sort 时,回调函数采用 两个 个参数和 returns 到 sort 这些值中哪个更大。您对 sort 的使用实际上是不正确的,您应该这样使用它:

arr.sort(function (a, b) { return a < b ? -1 : a > b ? 1 : 0; })