js sort()排序用法(转载)

电脑杂谈  发布时间:2020-07-13 20:21:34  来源:网络整理

c 排序 sort_sort 排序_sort排序bug

原文:

The

sort()方法用于对数组的元素进行排序并返回数组. 默认排序顺序基于字符串Unicode代码点.

语法: array.sort(fun);参数fun是可选的. 指定排序顺序. 必须是一个函数.

注意: 如果在不带参数的情况下调用该方法,则数组中的元素将按照字符编码的顺序按字母顺序排序(更精确地说).

如果要根据其他规则进行排序,则需要提供一个比较函数,该函数比较两个值,然后返回一个描述两个值的相对顺序的数字. 比较函数应具有两个参数a和b,返回值如下:

如果a小于b,则a应该出现在排序数组中的b之前,然后返回小于0的值.

如果a等于b,则返回0.

如果a大于b,则返回大于0的值.

简单的一点是: 比较函数的两个参数a和b,返回a-b的升序,返回b-a的降序

//注意: 原始数组已更改

示例:

1. 如果不传递任何参数,则不会根据值的大小对其进行排序,而是根据字符编码顺序进行排序;

var arr = ['General','Tom','Bob','John','Army'];

var resArr = arr.sort();

console.log(resArr); //输出[“军队”,“鲍勃”,“一般”,“约翰”,“汤姆”]

sort排序bug_sort 排序_c 排序 sort

var arr2 = [30,10,111,35,1899,50,45];

var resArr2 = arr2.sort();

console.log(resArr2); //输出[10,111,1899,30,35,45,50]

2. 传入参数实现升序和降序;

var arr3 = [30,10,111,35,1899,50,45];

arr3.sort(function(a,b){

返回a-b;

})

console.log(arr3); //输出[10,30,35,45sort 排序,50,111,1899]

var arr4 = [30,10,111,35,1899,50,45];

arr4.sort(function(a,b){

返回b-a;

})

console.log(arr4); //输出[1899,111,50,45,35,30,10]

3. 根据数组中对象的属性值排序;

var arr5 = [{id: 10},{id: 5},{id: 6},{id: 9},{id: 2}sort 排序,{id: 3}];

sort排序bug_sort 排序_c 排序 sort

arr5.sort(function(a,b){

返回a.id-b.id

})

console.log(arr5);

//输出新排序

// {id: 2}

// {id: 3}

// {id: 5}

// {id: 6}

// {id: 9}

// {id: 10}

更改为参数方法

arr5.sort(sortBy(attr,rev));

// attr: 根据属性排序; rev: 递增1或递减-1,如果未填充,则默认值为1

sortBy(attr,rev){

if(rev == undefined){rev = 1} else {(rev)?1: -1; }

sort 排序_c 排序 sort_sort排序bug

重新运行功能(a,b){

a = a [attr];

b = b [attr];

if(a

if(a> b){return rev * 1}

重新运行0;

}

}

4. 按数组中对象的多个属性值排序,按多个条件排序;

var arr6 = [{id: 10,age: 2},{id: 5,age: 4},{id: 6,age: 10},{id: 9,age: 6},{id: 2,age: 8},{id: 10,age: 9}];

arr6.sort(function(a,b){

if(a.id === b.id){//如果id相同,则按年龄降序

返回b.age-a.age

}其他{

返回a.id-b.id

}

sort 排序_sort排序bug_c 排序 sort

})

console.log(arr6);

//输出新排序

// {id: 2,年龄: 8}

// {id: 5岁,年龄: 4}

// {id: 6,年龄: 10}

// {id: 9,年龄: 6}

// {id: 10,年龄: 9}

// {id: 10,年龄: 2}

5. 排序通常用于复制!因为排序会改变原始数据的顺序.

var dataTemp = data.concat([]);

6. 按排序排序以找到最大值.

        function getMax(arr) {
            if (arr != null && (arr instanceof Array) && arr.length > 0) {
                let arr2 = arr.concat([]);
                arr2.sort(function (a, b) { return a - b })
                let max = arr2[arr2.length - 1];
                console.log('max', max);
                return max;
            } 
            return null;
        }
        function getMax2(arr, name) {
            
            if (arr != null && (arr instanceof Array) && arr.length > 0) {
                let arr2 = arr.concat([]);
                arr2.sort(function (a, b) { return a[name] - b[name] })
                let max = arr2[arr2.length - 1][name];
                console.log('max', max);
                return max;
            }
            return null;
        }

查看代码

相关信息:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-279219-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 章耐轩
        章耐轩

        日本海军联合舰队总吨位是超过北洋舰队的

      • 少康
        少康

        兑来兑去的东西

      • 家铉翁
        家铉翁

        苹果5升级到9

      热点图片
      拼命载入中...