该节sort函数描述是否有错?

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

Maxmengt

2016-03-31 15:11

该节描述说sort函数返回值是以-1和1作为分界点判断A,B是否需要交换位置。可是示例代码中的return a - b; 显然是根据0作为分界点。

然后查了w3school发现以下描述:

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

若 a 等于 b,则返回 0。

若 a 大于 b,则返回一个大于 0 的值。

http://www.w3school.com.cn/jsref/jsref_sort.asp

所以该节sort函数描述是否有误?

写回答 关注

8回答

  • Hot_shit
    2016-04-02 10:12:02
    已采纳

    应该以w3c为准

  • 慕UI9843876
    2016-06-08 16:04:15

    数组内的元素有数组和字母两种情,下面这个例子是当要比较的对象是两种情况的任意一种时的写法:


    <!doctype html>

    <html>

    <head>

    <meta charset="utf-8">

    <title>无标题文档</title>

    <script>

    function compare(a,b){

    //升序

    /*if(a>b){

    return 1;

    }

    if(a==b){

    return 0;

    }

    if(a<b){

    return -1;

    }*/

    //降序

    if(a<b){

    return 1;

    }

    if(a==b){

    return 0;

    }

    if(a>b){

    return -1;

    }

    }

    var myArra1=new Array(10,2,3,4,5,6,7,8,9,1);

    var myArra2=["g","d","e","h","q","b","c","a","A","D","F"];

    var myArra3=["g","d","DB","e","DA","h","AA","q","b","c","a","AB","D","F"];

    document.write(myArra1.sort(compare) + "<br/>"); 

    document.write(myArra2.sort(compare) + "<br/>"); 

    document.write(myArra3.sort(compare) + "<br/>"); 

    </script>


    </head>


    <body>


    </body>

    </html>


  • 慕UI9843876
    2016-06-08 15:32:54

    这句话也很重要:如果此方法没有参数,那就会将数组中的元素尝试转换成字符串,然后比较字符串中每个字符的ASCII码的大小,较小的的字符串在前面。

  • 慕UI9843876
    2016-06-08 15:27:51

    慕课网的写法是有些问题的,大家看看这里面的解释吧

    http://www.softwhy.com/forum.php?mod=viewthread&tid=8360

  • 慕UI9843876
    2016-06-08 15:24:55

    前面已经说了有参数函数的,若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。若 a 等于 b,则返回 0。若 a 大于 b,则返回一个大于 0 的值。如果你直接对字符进行运算符运算,会返回什么结果? NaN.所以不符合结果。这样排序就没有什么用。
    所以说要根据sort函数的返回值进行改写.

    [JavaScript] 纯文本查看 复制代码运行代码

    console.log(["g","d","e","h","q","b","c","a","A","D","F"].sort(function(a,b){if(a>b){return 1;}if(a==b){return 0;}if(a<b){return -1;}}));

       


  • 那一年美然
    2016-04-08 11:37:15

    描述不准确

    应该是大于0,小于0,和等于0三种情况

  • fanfanzhang
    2016-03-31 16:10:16

    如果是字母的话,会按照字母顺序进行排序。

    慕UI984... 回复Maxmen...

    若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。若 a 等于 b,则返回 0。若 a 大于 b,则返回一个大于 0 的值。如果你直接对字符进行运算符运算,会返回什么结果? NaN.所以不符合结果。这样排序就没有什么用。

    2016-06-08 15:23:40

    共 2 条回复 >

  • pengml
    2016-03-31 16:00:16

    没错  0的话a=b,<=-1说明a<b , >=1说明a>b。

    Maxmen...

    这是建立在a,b都为整数的情况吧。

    2016-03-31 16:45:00

    共 1 条回复 >

JavaScript进阶篇

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

468061 学习 · 21891 问题

查看课程

相似问题