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});
    
  • 相关阅读:
    Hard Rock
    Codeforces Round #416 (Div. 2) B. Vladik and Complicated Book
    codeforces 793B. Igor and his way to work
    codeforces 1B Spreadsheets
    HDU 1069 Monkey and Banana
    codeforces 2B The least round way
    【机器学习】 通俗说拟合
    python-八皇后问题
    python-核心知识思维导图
    python-@property 属性
  • 原文地址:https://www.cnblogs.com/jessie-xian/p/11595902.html
Copyright © 2011-2022 走看看