美文网首页
数组的排序sort

数组的排序sort

作者: 杨戬Yj | 来源:发表于2020-03-24 11:38 被阅读0次

    sort() 方法用于对数组的元素进行排序。

    它会直接修改当前Array的元素位置,直接调用时,按照默认升序排序,默认排序顺序是根据字符串ASSIC码

    arrayObject.sort(sortby);
    // 参数sortby  可选,用来规定排序的顺序,但必须是函数
    
    var arr = [3,9,4,7,8,1,5,3];
    var sort = arr.sort();
    console.log(sort); // [1, 3, 3, 4, 5, 7, 8, 9]
    
    var arr = [1, 3, 9, 'A', 'X', 'G', 'c', 6];
    var sort = arr.sort();
    console.log(sort); 
    console.log(arr); 
     // 返回值sort即为arr 的值  [1, 3, 6, 9, "A", "G", "X", "c"]   
    
    var arr = ['123', '321', '1000', '50'];
    console.info(arr.sort()); //["1000", "123", "321", "50"]  默认按照ASSIC码排列(升序)
    console.info(typeof(arr[0])); //string 
    
    • 升序排列
      若 a 小于 b,即 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。
    • 降序排序
      若 a 大于 b, 即 a - b 大于零,则返回一个大于零的值,数组将按照 降序排列。
    function upNum(a,b){
        return a-b;  //升序排列
    }
    function downNum(a,b){
        return b-a;  //降序排序
    }
    
    var numarr=[30, 995, 34, 10, 100, 98, 321, 123];
    
    console.log(numarr.sort(downNum));// [995, 321, 123, 100, 98, 34, 30, 10]
    console.log(numarr.sort(upNum)); // [10, 30, 34, 98, 100, 123, 321, 995]
    
    • 按照数组对象中某个属性值进行排序
    var arr1=[{name:'菲菲',age:18}, {name:'关关',age:26}, {name:'伊人',age:16}];
    function compare(prop){
        return function(a,b){
            var val1 = a[prop];  //此处不能用a.prop,b.prop
            var val2 = b[prop];
            return val1 - val2;
        }
    }
    console.log(arr1.sort(compare('age')));
    /*
        0: {name: "伊人", age: 16}
        1: {name: "菲菲", age: 18}
        2: {name: "关关", age: 26}
    */
    
    • 根据参数来排序
    function sortBy(prop, rev){
        rev = (rev) && rev > 0 ? 1 : -1;
        console.log(rev); 
        return function(a, b){
            var a = a[prop];  //此处不能用a.prop,b.prop
            var b = b[prop]; 
            if(rev > 0){
                return a - b;  //升序
            }
            if(rev < 0){
                return b - a;  //降序
            }
            return 0;
        }
    }
    console.info(arr1.sort(sortBy('age'))); //无参数,参数小于等于0 降序,参数大于0 升序
    /*  默认降序
        0: {name: "关关", age: 26}
        1: {name: "菲菲", age: 18}
        2: {name: "伊人", age: 16}
    */
    

    相关文章

      网友评论

          本文标题:数组的排序sort

          本文链接:https://www.haomeiwen.com/subject/qvdtuhtx.html