哪位大神教教我这段JavaScript代码s.sort(function(a,b){return a-b;});中的function怎么理解,其中s是数
答案:5 悬赏:30
解决时间 2021-03-24 13:34
- 提问者网友:浪荡羁士
- 2021-03-23 16:34
其中s是数组[888,2222,9,4];我不明白sort函数中参数是如何作用的,function中的a和b又是干什么的
最佳答案
- 二级知识专家网友:温柔刺客
- 2021-03-23 17:10
改了下,可以看到排序过程,看看就知道了
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟</title>
</head>
<body>
<p id="demo">单击按钮降序排列数组。</p>
<p id="debug">测试效果</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction(){
var points = [40,100,1,5,25,10];
points.sort(function(a,b){document.getElementById("debug").innerHTML +="a为"+a+"b为"+b+"结果为"+(b-a)+(function(){if (b-a<0){return "不动"} else {return "调换"}}()) +"<br>";return b-a});
var x=document.getElementById("demo");
x.innerHTML=points;
}
</script>
</body>
</html>
全部回答
- 1楼网友:承载所有颓废
- 2021-03-23 21:33
- 2楼网友:一个很哇塞的汉子
- 2021-03-23 20:47
888, 2222, 9, 4 ·······return 2222-888=1334(a=2222,b=888,a直接从第二位开始)为正数,888和2222不换位子
888, 2222, 9, 4 ·······return 9-888=-879 为负数(为什么和888比较而不和2222比较,因为这是一种折半比较,前面的位数是偶数/2,若前面是奇数/2 +1,此时是偶数,所以和第一位进行比较),9直接挪到888的前面(因为888和2222的关系已经明确,比888小就直接挪到888前面了)
9, 888, 2222, 4 ·······return 4-888=-884为负数,将4挪到888前面
9, 4, 888, 2222········return 4-9=-5为负数,将4挪到9前面
4, 9, 888, 2222·······完成 ,以上数据亲测有效
以上注释为我的推测,有错请指正,不用走流程 ( ̄3 ̄)a
- 3楼网友:星星坠落
- 2021-03-23 19:54
那个function的作用就是比较两个数的大小用的,然后返回结果的正负作为排序的依据.<br><br>这个函数是升序排序,如果想逆序排序改成return b-a;就行了.<br>它的排序原理是每2个数比较,然后根据正负更改数组内元素的位置.<br>比如第一次比较,a就是888,b就是2222然后返回888-2222 是负的 位置不变.<br>你可以在函数里面alert一下a和b的值看看.
- 4楼网友:樣嘚尐年
- 2021-03-23 18:47
我是来看评论的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯