zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    215. Kth Largest Element in an Array
    214. Shortest Palindrome
    213. House Robber II
    212. Word Search II
    210 Course ScheduleII
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    sql 开发经验
  • 原文地址:https://www.cnblogs.com/backpacker/p/2619200.html
Copyright © 2011-2022 走看看