我正在尝试实现我自己的_.sortBy版本,但我无法弄清楚_.sortBy与内置于Javascript Array实例的排序之间的区别。他们似乎不同地评估可选的回调参数。我不确定他们为什么以及如何以不同方式评估回调参数。例如:
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
答案 0 :(得分:3)
_.sortBy
接受返回要排序的值的函数。
Array.sort
改为使用比较功能。
区别在于_.sortBy
中的回调函数只是告诉sortBy
要排序的值(因此名称)。使用sort
时,回调函数会使用两个参数并返回sort
这些值中的哪一个更大。您对sort
的使用实际上是不正确的,这就是您应该如何使用它:
arr.sort(function (a, b) { return a < b ? -1 : a > b ? 1 : 0; })