sfk1993
sfk1993
采纳率72.7%
2016-03-10 06:15 阅读 1.4k
已采纳

新手问题(JavaScript有关数组的排序问题)

例子:
arr.sort(orderby);
function orderby(a,b)

return a-b;

这样写不太明白为什么能对数值大小进行排序?图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    Vincent_yoyo Vincent_yoyo 2016-03-10 07:12

    arr.sort(compareFn);
    compareFn - 一个用来确定数组元素排序顺序的比较函数。此参数是可选的。比较函数应该用两个参数进行比较。给定元素 A 和 B,compareFn 的结果可以具有负值、0 或正值:
    若返回值为负,则表示 A 在排序后的序列中出现在 B 之前。
    若返回值为 0,则表示 A 和 B 具有相同的排序顺序。
    若返回值为正,则表示 A 在排序后的序列中出现在 B 之后。

    你上面写的
    arr.sort(orderby);
    function orderby(a,b)

    return a-b;

    orderby就是比较函数compareFn,a,b值是arr数组的两个值,它会把里面的每个数组值都进行比较的

    点赞 2 评论 复制链接分享
  • WinsenJiansbomber Jimbo 2016-03-10 06:24

    oderby 是一个返回 bool的函数,true 表示需要进行调整顺序,JS解释器会按返回值进行相应的排序。

    点赞 1 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-03-10 06:24

    因为排序算法在sort内部实现了,唯一排序算法不确定的,是根据什么来排序,说白了就是给定两个数据,用什么规则判断谁大谁小。
    而你传进去的orderby函数就是定义这个的。
    sort会使用某种排序算法排序,在排序的过程中,会调用你的orderby来确定元素的大小关系。

    点赞 1 评论 复制链接分享
  • linhaiguo 为了那份宁静 2016-03-10 06:23

    你这样写是有问题的。把代码贴完整啊

    点赞 评论 复制链接分享
  • tmgfdzh LenDuan 2016-03-10 07:56

    首先 js 是一种弱类型的语言, function orderby(a,b) 中 函数名orderby 可以做为函数的引用传入arr.sort(orderby) 中 ,
    js的解释时,会自动根据orderby的返回值对数据arr进行排序。
    其中a和b分别为arr中的元素。

    点赞 评论 复制链接分享

相关推荐