zoukankan      html  css  js  c++  java
  • js基础之数组排序

    sort() 方法是最强大的数组方法之一。

    sort() 方法以字母顺序对数组进行排序:
    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    fruits.sort();            // 对 fruits 中的元素进行排序   Apple,Banana,Mango,Orange
    
    反转数组

    reverse() 方法反转数组中的元素。
    您可以使用它以降序对数组进行排序:

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    fruits.sort();            // 对 fruits 中的元素进行排序
    fruits.reverse();         // 反转元素顺序   Orange,Mango,Banana,Apple
    
    数字排序

    默认地,sort() 函数按照字符串顺序对值进行排序。
    该函数很适合字符串("Apple" 会排在 "Banana" 之前)。
    不过,如果数字按照字符串来排序,则 "25" 大于 "100",因为 "2" 大于 "1"。
    正因如此,sort() 方法在对数值排序时会产生不正确的结果。
    我们通过一个比值函数来修正此问题:

    var points = [40, 100, 1, 5, 25, 10];
    points.sort(function(a, b){return a - b});    //1,5,10,25,40,100
    

    使用相同的技巧对数组进行降序排序:

    var points = [40, 100, 1, 5, 25, 10];
    points.sort(function(a, b){return b - a});    //100,40,25,10,5,1
    

    比值函数
    比较函数的目的是定义另一种排序顺序

    比较函数应该返回一个负,零或正值,这取决于参数:
    function(a, b){return a-b}
    当 sort() 函数比较两个值时,会将值发送到比较函数,并根据所返回的值(负、零或正值)对这些值进行排序。

    以随机顺序排序数组
    var points = [40, 100, 1, 5, 25, 10];
    points.sort(function(a, b){return 0.5 - Math.random()}); 
    
    查找最高(或最低)的数组值

    JavaScript 不提供查找数组中最大或最小数组值的内建函数。

    不过,在对数组进行排序之后,您能够使用索引来获得最高或最低值。

    升序排序:

    var points = [40, 100, 1, 5, 25, 10];
    points.sort(function(a, b){return a - b});
    
    // 现在 points[0] 包含最低值
    // 而 points[points.length-1] 包含最高值
    

    降序排序:

    var points = [40, 100, 1, 5, 25, 10];
    points.sort(function(a, b){return b - a});
    
    // 现在 points[0] 包含最高值
    // 而 points[points.length-1] 包含最低值
    
    对数组使用 Math.max()

    你可以使用 Math.max.apply 来查找数组中的最高值:

    function myArrayMax(arr) {
        return Math.max.apply(null, arr);
    }
    
    对数组使用 Math.min()

    你可以使用 Math.min.apply 来查找数组中的最低值:

    function myArrayMin(arr) {
        return Math.min.apply(null, arr);
    }
    
    我的 Min / Max JavaScript 方法

    最快的解决方法是使用“自制”方法。

    此函数遍历数组,用找到的最高值与每个值进行比较:

    //查找 Max
    function myArrayMax(arr) {
        var len = arr.length
        var max = -Infinity;
        while (len--) {
            if (arr[len] > max) {
                max = arr[len];
            }
        }
        return max;
    }
    
    //查找 Min
    function myArrayMin(arr) {
        var len = arr.length
        var min = Infinity;
        while (len--) {
            if (arr[len] < min) {
                min = arr[len];
            }
        }
        return min;
    }
    
    排序对象数组

    JavaScript 数组经常会包含对象:

    var cars = [
    {type:"Volvo", year:2016},
    {type:"Saab", year:2001},
    {type:"BMW", year:2010}];
    //即使对象拥有不同数据类型的属性,sort() 方法仍可用于对数组进行排序。
    //解决方法是通过比较函数来对比属性值:
    cars.sort(function(a, b){return a.year - b.year});
    
  • 相关阅读:
    Mac下PyCharm快捷键大全
    SQL语句优化
    There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:661)
    Hadoop Trash回收站使用指南
    HDFS 中向 DataNode 写入数据失败了怎么办
    mapreduce 实现写出orc文件
    mapreduce读取压缩文件
    hive开窗函数over(partition by ......)用法
    Mac 安装 home Brew以及 XCTool的过程记录
    iOS开发中使用CocoaPods来管理第三方的依赖程序
  • 原文地址:https://www.cnblogs.com/jessie-xian/p/11595902.html
Copyright © 2011-2022 走看看