我是靠谱客的博主 轻松日记本,最近开发中收集的这篇文章主要介绍JavaScript中sort()对数组数字项函数function(a,b)返回值为a-b即为升序排列的细解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

为什么sort()对数组中数字排序时,采用

 sort(function(a, b) {
        return  a-b;
      }
)

代码即可实现对数组的降序排列?

sort()方法对于数组排序,在其中参数使用了比较函数compareFunction,那么会根据compareFunction的返回值进行排序。具体规定如下:

如果指明了 compareFunction ,那么数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:

  • 如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
  • 如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
  • 如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。
  • compareFunction(a, b) 必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。

对于纯数字

 sort(function(a, b) {
        return  a-b;
      }
)

等价于 

   sort(function(a,b){
       if(a>b){
           return 1;
       }
       if(a<b){
           return -1;
       }
       return 0;
    }
   )

都属于升序排列。

具体理解其实就是一个初中数学的分类讨论问题。

(1)当a<b时,a-b<0。即return 一个负值。

根据compareFunction 的行为定义,a 会被排列到 b 之前,是升序排列方式。

(2)当a>b时,a-b>0。即return 一个正值。

根据compareFunction 的行为定义,b 会被排列到 a之前,也是升序排列方式。

(3)当a=b时,a-b=0。即return 零。

根据compareFunction 的行为定义,a 和 b 的相对位置不变。

综合(1)(2)(3)所述,代码

 sort(function(a, b) {
        return  a-b;
      }
)

可以满足数字数组的升序排列要求。降序排列可同理推导。

 

最后

以上就是轻松日记本为你收集整理的JavaScript中sort()对数组数字项函数function(a,b)返回值为a-b即为升序排列的细解的全部内容,希望文章能够帮你解决JavaScript中sort()对数组数字项函数function(a,b)返回值为a-b即为升序排列的细解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部