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