为什么return a-b可以决定升降序?

来源:7-22 数组排序sort()

乘蓄媛z

2016-07-31 15:40

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Array对象 </title>

<script type="text/javascript">

   function sortNum(a,b) {

    return a-b;

   }

var myarr = new Array("80","16","50","6","100","1");

document.write(myarr.sort(sortNum));

</script>

</head>

<body>

</body>

</html>


还有就是document.write(myarr.sort(sortNum));与document.write(myarr.sort(sortNum()));的区别,求大牛解释

写回答 关注

5回答

  • Yuuyu
    2016-08-06 14:47:19

    权威指南上的定义希望能帮到你·~http://img.mukewang.com/57a587d500017fba24482448.jpg

  • Yuuyu
    2016-08-05 16:06:28

    这个函数的定义:myArray.sort(sortMethod);

    注意: 该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下: 

      若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
      若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
      若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。

    按照定义:

    若a-b<=-1即b-a>1 ,排序为AB(B较大)

       a-b>=1  则排序为BA (A较大)

    也就是说较大的排在后面。。升序。。反之,b-a为降序。。。



    Yuuyu 回复逆风之夏

    我把书上的定义放在评论了 你看看能不能理解~

    2016-08-06 14:45:47

    共 4 条回复 >

  • 慕粉3626166
    2016-08-02 10:46:44

    你是不是想问有没有括号的区别?我觉得是这样,sort()里面调用的是方法而不是属性,就像array.length中length是属性,所以不需要加括号,而mystr.toUpperCase()中toUpperCase()是方法名,所以调用时需要加上括号。这里同理,你在script中写的是"function sortNum()",可见sortNum()被定义为一个方法,那么调用该方法时就应该加上括号,才是完整的方法名~不知道我说的是不是你要的~

    乘蓄媛z

    在这里有这个括号和没这个括号结果是相差很大的,所以想搞懂

    2016-08-04 21:45:42

    共 1 条回复 >

  • To struggle—Dream
    2016-07-31 19:01:11

    我认为,不是说function(a,b)在排序,排序的还是sort()函数,function(a,b)只是给一个排序的依据,而return a-b就是一种最常见的排序依据——按从小到大排。至于为什么,首先这是一个方法,就像定时器一样的方法,js就是这么设定的,我也不知道。

  • 慕盖茨4878874
    2016-07-31 17:03:41

    可以这样理解,不要理解成a减b的意思,理解成在26个字母中a到b的意思,在26个字母中b比a大,所以写成a-b就是升序,写成b-a就是降序。

    Rvie

    太棒了

    2019-03-16 16:21:40

    共 2 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题