• Javascript 中 Array的 sort()和 compare()方法


    Javascript 中 Array的 sort()方法其实是把要排序的内容转化为string(调用 toString()), 然后按照字符串的第一位 ascii 码先后顺序进行比较,不是数字。

    我们看看官方是怎么说的:

    arrayobj.sort(sortfunction)

    参数

    arrayObj

    必选项。任意 Array 对象。

    sortFunction

    可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

    说明

    sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

    如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

    • 负值,如果所传递的第一个参数比第二个参数小。
    • 零,如果两个参数相等。
    • 正值,如果第一个参数比第二个参数大。

     

    <html>
      <head>
        <script type="text/javascript">
            var arr = [1,3, 25];
         arr.sort(); alert(arr);
    </script> </head> <body> </body> </html>

    结果: 1,25,3

    那么怎么办呢?我们可以写一个 compare() 方法

    <html>
    <head>
    <script type="text/javascript">
        var arr = [ 1, 3, 25 ];
        arr.sort(compare); //函数名是对象的引用,所以只写名字就行。
        alert(arr);
        function compare(num1, num2) {
            var temp1 = parseInt(num1);
            var temp2 = parseInt(num2);
            if (temp1 < temp2) {
                return -1;
            } else if (temp1 == temp2) {
                return 0;
            } else {
                return 1;
            }
        }
    </script>
    </head>
    <body>
    </body>
    </html>

     结果: 1,3,25

    我们可以把上面代码改写成匿名类的方式:

    <html>
    <head>
    <script type="text/javascript">
        var arr = [ 1, 3, 25 ];
        arr.sort(function (num1, num2)
            {
                var temp1 = parseInt(num1);
                var temp2 = parseInt(num2);
                if (temp1 < temp2) {
                    return -1;
                } else if (temp1 == temp2) {
                    return 0;
                } else {
                    return 1;
                }
            }
        )
        alert(arr);
    </script>
    </head>
    <body>
    </body>
    </html>

    结果一样: 1,3, 25

  • 相关阅读:
    sklearn库学习笔记1——preprocessing库
    juypter notetbook
    信用卡欺诈
    matplotlib1
    python一行输入多个数
    pandas数据预处理
    pandas基础用法
    numpy简单用法2
    numpy 简单用法
    简单循环
  • 原文地址:https://www.cnblogs.com/backpacker/p/2619200.html
Copyright © 2020-2023  润新知