中易网

哪位大神教教我这段JavaScript代码s.sort(function(a,b){return a-b;});中的function怎么理解,其中s是数

答案:5  悬赏:30  
解决时间 2021-03-24 13:34
其中s是数组[888,2222,9,4];我不明白sort函数中参数是如何作用的,function中的a和b又是干什么的
最佳答案


改了下,可以看到排序过程,看看就知道了

<!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>
全部回答
  • The Compare Function The purpose of the compare function is to define an alternative sort order. The compare function should return a negative, zero, or positive value, depending on the arguments: function(a, b){return a-b} When the sort() function compares two values, it sends the values to the compare function, and sorts the values according to the returned (negative, zero, positive) value. Example: When comparing 40 and 100, the sort() method calls the compare function(40,100). The function calculates 40-100, and returns -60 (a negative value). The sort function will sort 40 as a value lower than 100. You can use this code snippet to experiment with numerically and alphabetically sorting: <button onclick="myFunction1()">Sort Alphabetically</button> <button onclick="myFunction2()">Sort Numerically</button> <p id="demo"></p> <script> var points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points; function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points; } function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points; } </script>
  • 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
    那个function的作用就是比较两个数的大小用的,然后返回结果的正负作为排序的依据.<br><br>这个函数是升序排序,如果想逆序排序改成return b-a;就行了.<br>它的排序原理是每2个数比较,然后根据正负更改数组内元素的位置.<br>比如第一次比较,a就是888,b就是2222然后返回888-2222 是负的 位置不变.<br>你可以在函数里面alert一下a和b的值看看.
    我是来看评论的
    我要举报
    如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
    大家都在看
    如何正确理解孩子行为
    装修用封墙布采用的的确良布具体是什么规格的
    是不是一天摄取的热量比消耗的热量少就可以瘦
    那位大侠知道普吉岛8月11日至20日的天气预报.
    国税和地税哪个好?
    路虎发现4汽油版排量3.0的车可以去西藏吗?是
    桑塔纳2000玻璃风口不吹风是咋回事,?请教师傅
    晚上不吃饭有何害处?
    苏州好的日语培训机构推荐,要能学到东西的~~
    中国工商银行atm(于湖路)地址有知道的么?有
    脑筋急转弯:小鸡和小鸭哪个厉害,为什么?
    美菱亚典娜450冰箱怎么样
    猫腿上被夹子夹掉了一块毛,还会长么
    对三四岁小孩木棍抽打用脚踩头抓到了吗
    吃维生素c会增加饭量吗
    推荐资讯
    监控探头3.6、6、8mm镜头等得功能,比如说有
    找跟算你狠。和那就这样吧这样类型的歌
    为什么再《百家姓》里找不到姓钮的
    请问谁知道重庆至统景有多远吗?
    划分ip了的交换机可以用光纤收发器传输吗
    “蓝色的海面铺满白色的痕迹”是陈奕迅哪首歌
    09飞度,100块钱油跑160公里, 4s店也检查不
    陈慧娴没有孩子
    挖掘机 一打火 就档一下 打个4,5下才能打着是
    小孩拔了牙神经后还长嘛
    新白发魔女传玉罗刹第几集出现啊
    辞职的原因聪明回答 为什么辞职怎么回答
    手机登qq时,显示手机磁盘不足,清理后重新登
    刺客的套装怎么选啊?