为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

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

0 回复 有任何疑惑可以回复我~

数组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;

}

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

哈哈哈哈哈哈哈 提问者

那个是教案给的结果 不是我打印出来的结果 所以我无法理解
2015-09-17 回复 有任何疑惑可以回复我~
#2

Lyong 回复 哈哈哈哈哈哈哈 提问者

那个结果不对的,应该是我写的那样
2015-09-17 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信