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

其中s是数组[888,2222,9,4];我不明白sort函数中参数是如何作用的,function中的a和b又是干什么的... 其中s是数组[888,2222,9,4];我不明白sort函数中参数是如何作用的,function中的a和b又是干什么的 展开
 我来答
weixiao800
推荐于2017-09-16 · TA获得超过824个赞
知道小有建树答主
回答量:482
采纳率:0%
帮助的人:439万
展开全部
那个function的作用就是比较两个数的大小用的,然后返回结果的正负作为排序的依据.

这个函数是升序排序,如果想逆序排序改成return b-a;就行了.
它的排序原理是每2个数比较,然后根据正负更改数组内元素的位置.
比如第一次比较,a就是888,b就是2222然后返回888-2222 是负的 位置不变.
你可以在函数里面alert一下a和b的值看看.
珂翁空
2019-04-19 · TA获得超过752个赞
知道小有建树答主
回答量:853
采纳率:0%
帮助的人:86.6万
展开全部

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

<!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>

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青柚木木9T
2019-01-04
知道答主
回答量:32
采纳率:0%
帮助的人:2.8万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-05-21
展开全部
  • 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>

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式