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

时间:2015-01-23 01:13:11

标签: javascript underscore.js

我正在尝试实现我自己的_.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

1 个答案:

答案 0 :(得分:3)

_.sortBy接受返回要排序的值的函数。
Array.sort改为使用比较功能

区别在于_.sortBy中的回调函数只是告诉sortBy要排序的值(因此名称)。使用sort时,回调函数会使用两个参数并返回sort这些值中的哪一个更大。您对sort的使用实际上是不正确的,这就是您应该如何使用它:

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