无法理解sort()下面这两种结果

来源:7-22 数组排序sort()

哈哈哈哈哈哈哈

2015-09-17 16:46

1.使用sort()将数组进行排序,代码如下:

<script type="text/javascript">
 var myarr1 = new Array("Hello","John","love","JavaScript");
 var myarr2 = new Array("80","16","50","6","100","1");
 document.write(myarr1.sort()+"<br>");
 document.write(myarr2.sort());
</script>

运行结果:

Hello,JavaScript,John,love
1,100,16,50,6,80


写回答 关注

4回答

  • 雨丶辰
    2015-10-04 16:44:08

    没有传参时,默认以unicode码方式排序。

  • imooc_hcy
    2015-09-21 21:44:54

    数组sort()方法对于数组中的任何元素,无论是什么数据类型,都会用toString()方法转化为字符串,然后再比较字符串,所以得到这样的结果。

    如果想将你的myarr2数组进行数值升降的排列就要给sort()方法一个参数。它是有参数的,是函数。一般是排列函数。比如你把document.write(myarr2.sort(function(a,b)return a-b;))写入,就能将输出改成升序;将中间的a-b换成b-a就能输出为降序。这是因为该参数函数return的结果如果是小于0的,a与b的顺序将不变;若return 的结果大于0,则a与b的顺序将改变。

    这样写你可能更好理解。若是升序:

    document.write(sort(compare));

    function compare(a,b){

        if(a<b)return -1;

        else if(a>b)return 1;

        else return 0;

    }

    你可以试着编写一下降序。

  • Lyong
    2015-09-17 17:14:58

    myarr1.sort()+"<br>"  因为sort 中为空,数组为字母,sort按照字母的顺序排序,结果:Hello,JavaScript,John,love  然后<br>换行,myarr2.sort()  你的结果不对,应该是:100,80,50,16,6,1  数字按照从大到小排序,希望可以帮到你。

    Lyong 回复哈哈哈哈哈哈...

    那个结果不对的,应该是我写的那样

    2015-09-17 18:22:12

    共 2 条回复 >

  • 66幻33
    2015-09-17 16:56:31

    我感觉是按ascll值进行的排序

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468672 学习 · 21895 问题

查看课程

相似问题