sort 方法不理解,老师可以讲一下吗

sort 方法不理解,老师可以讲一下吗

相关代码:

第三步,不理解

<!DOCTYPE html>
<html>

<head lang="en">
<meta charset="UTF-8">
<title>Math.random()</title>
</head>

<body>
<script>
//补充代码
// 第一步: 创建一个空数组, 用来接收后面的十个整数
var Arr = [];
// 第二步: 在0~100( 包括 0 和100) 之间的随机整数中, 获取十个整数, 放入创建的数组中
for (var i = 0; i < 10; i++) {
Arr.push(parseInt(Math.random() * 101));
}
// 第三步: 对数组进行降序排序
// 使用 sort 方法, b-a 就是从大到小排列
Arr.sort(function(a, b) {
return b - a;
})
// 第四步: 输出数组的最大值和最小值
document.write(Arr + '</br>' + '这组数中最大数是:' + Arr[0], '这组数中最小数是:' + Arr[9]);
</script>
</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
卡布琦诺 2021-02-21 17:41:34

同学你好,是不理解sort方法中,return b - a;排序原理是吗?其原理如下:

sort(function(a,b){

    return b - a;

})

等价于

sort(function(a,b){

    if(b < a) {

        return -1;

    }

    if(b > a) {

        return 1;

    }

    if(b == a) {

        return 0;

    }

})

(1)如果return返回-1,表示b小于a,数组排序中b会排在a之前

(2)如果return返回1,表示b大于a,数组排序中b会排在a之后

(3)如果return返回0,表示b与a相等,其位置保持不变

希望可以帮到你,祝学习愉快!

  • 提问者 日拱一卒_ #1

    http://img1.sycdn.imooc.com//climg/603252e2098c2d7506270108.jpg

    老师您这里说的,返回-1 ,表示b小于a,b排在a前面,那么,这时候就是从小到大的排序,sort 在此题中是ruturn b-a 表示从大到小排序,这个地方我有些搞不懂


    你给我讲的等价这一块我还没有明白,不理解的原因是如上描述

    2021-02-21 20:35:43
  • 卡布琦诺 回复 提问者 日拱一卒_ #2

    同学你好,非常抱歉,这里老师笔误,写反了。正确的理解是:

    (1)如果return返回-1,表示b小于a,就把a和b的位置交换,b排在a之后

    (2)如果return返回1,表示b大于a,就把a和b的位置交换,b排在a之前

    (3)如果return返回0,表示b等于a,其位置保持不变。

    祝学习愉快!

    2021-02-22 10:52:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师