前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js中数组的sort()方法排序

js中数组的sort()方法排序

作者头像
bering
发布2019-12-03 11:39:19
6K0
发布2019-12-03 11:39:19
举报
文章被收录于专栏:游戏开发之旅游戏开发之旅

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

一.sort()方法带参和无参调用

1.sort() 方法的带参和无参调用: sort()方法对数组元素进行排序,参数可选。返回一个数组的引用,不会创建新的数组对象而是将原数组改变成排序后的数组。

  • 无参调用: 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串以便进行比较。如果数组元素是数字的话会得到错的结果,这时需要使用有参的方法。
  • 带参调用: 如果想要自己规定排序方式,就需要在sort()方法中提供一个比较函数,该函数要比较两个值即有两个形参a 和 b,函数执行时浏览器会将数组中的元素依次作为实参传入,返回一个用于说明这两个值的相对顺序的数字。sort()方法会根据函数返回值来进行数组元素的交换。返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。 若a 大于 b,则返回一个大于 0 的值。 换句话说,当函数返回值小于0时,a与b的顺序不变;返回值为0时,则表示两数相等,顺序也不变;返回值大于0时,a与b交换位置。 2.sort(sortby)方法的排序函数sortby();

二.sort()方法应用举例

例一.

代码语言:javascript
复制
<script type="text/javascript">

        //排序函数
            function compare(a,b){
                if(a>b){
                    return 1; //sort()中参数大于0,交换a b顺序,升序排列
                }else if(a<b){
                    return -1;  //sort()中参数小于0,a b顺序不变,升序排列
                }
            }

            var arr = [2,0,6,3,8];
            var newArr = arr.sort(compare);  //此处调用比较函数,并将其返回值作为sort方法参数
            document.write("升序排列后的数组为:"+newArr);
        </script>

上边是很简单的一个比较函数,是按升序排列的,如果要按降序排列,只要将返回值进行交换即可。

例二.

下边这个和上边函数实现的功能一样,只是写法不一样:

代码语言:javascript
复制
<script type="text/javascript">

            function compare(a,b){
                return a-b;  //如果a>b,返回值大于0,交换a b,升序排列
                //return b-a; 如果b-a大于0,即b大于a则交换,较大的b 在前,降序排列 
            }

            var arr = [2,1,3,4,0];
            var newArr = arr.sort(compare);

            document.write("升序排列后的数组:"+newArr);
        </script>

以上两种只是排序函数中最简单常用的,都可以将数组中的元素排序。

例三.

下面的函数可以将元素按先奇后偶排序: 要将元素按照先奇后偶的顺序排列,则a b交换的条件为a是偶数b是奇数且a>b。有了排序的条件,就可以很容易写出比较函数。

代码语言:javascript
复制
<script type="text/javascript">

            function compare(a,b){
                if(a%2==0 && b%2==1){
                    return 1;  //1.对偶数和奇数排序,先将全部奇数放在前边,偶数放在后边
                }
                if((a%2==1 && b%2==1 || a%2==0 && b%2==0 )&& a>b){
                    return 1; //2.分别对奇数和偶数进行从小到大的顺序排序
                }


            }

            var arr = [2,1,3,4,0];
            var newArr = arr.sort(compare);

            document.write("升序排列后的数组:"+newArr);
        </script>
代码语言:javascript
复制
排序结果为 1,3,0,2,4 

例四.

最后一种是对字符数组进行不区分大小写将其按照Unicode 编码从大到小排列: var arr = [A,b,a,B]; 要实现这种排序的比较函数的条件为:当a.toString().toLowerCase()

代码语言:javascript
复制
<script type="text/javascript">
            var arr = ["a","A","B","C","b"];
            function compare(a,b){
                if(a.toString().toLowerCase() < b.toString().toLowerCase()){
                    return -1;
                }else{
                    return 1; //按编码从小到大排列
                }
            }
            var newArr = arr.sort(compare);
            document.write(newArr);
        </script>

a.toString()方法会返回 a的字符串表达形式 “a”. 如果 a 是一个变量存储的为一个Number型数值 2,则 a.toString()方法会返回 该数值的字符串表达形式 “2”; 此处Array的toString()方法和类的toString()方法不同,Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。Arrays的toString方法是返回指定数组内容的字符串表示形式。

三.对sort(sortby)方法的理解:

sort()方法主要依靠其回调函数来进行排序,回调函数中需要两个参数,在执行sort()方法时会调用回调函数,这时会将调用sort()方法的数组中的元素作为实参两两依次作为回调函数实参传入,通过回调函数的条件进行比较得出一个返回值,将返回值作为sort()函数的参数来判断是否交换,大于零则交换,否则不交换。 所以回调函数规定了排序的条件以及进行排序,而sort()方法是根据这个条件进行交换。所以sort()函数只执行一次,回调函数会依次两两传入实参。

以上是关于JS中sort函数的小结,后续遇到新的问题再继续更新!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.sort()方法带参和无参调用
  • 二.sort()方法应用举例
    • 例一.
      • 例二.
        • 例三.
          • 例四.
          • 三.对sort(sortby)方法的理解:
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档