JavaScript自定义数组排序

JavaScript中的Array对象提供了一种便捷的排序方式,但默认排序是基于字符编码的Unicode顺序。若需按照自定义规则排序,可以使用sort()方法并传入比较函数。本文将探讨如何自定义数组排序逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Array中有自带的排序功能,这个使用起来比较方便,我们有一点必须清楚,就是排序的依据,如果sort不传入参数的话,那就是按照字符编码(Unicode编码)的顺序排序

        var a=["3","2","1"];

        console.log(a[0].charCodeAt(0));  // 51
        console.log(a[1].charCodeAt(0));  // 50
        console.log(a[2].charCodeAt(0));  // 49
        console.log(a.sort());            // ["1", "2", "3"]

        var a=["3","你","他"];

        console.log(a[0].charCodeAt(0));  // 51
        console.log(a[1].charCodeAt(0));  // 20320
        console.log(a[2].charCodeAt(0));  // 20182
        console.log(a.sort());            // ["3", "他", "你"]

        var a=["3","11","222"];

        console.log(a.sort());            // ["11", "222", "3"] 
                                          // 多个字符的时候按照第一个字符的编码
      不过我觉得sort最好用的地方在于可以自定义排序,这个在实际运用中也比较常见,比如要对对象数组排序。例如线面的一个对象数组,要根据其中的某一个字段进行排序,当然自己也可以写个函数来完成,不过我想没有sort来得方便。

        var list = [
            {
                max:3,
                avg:2,
                min:1
            },
            {
                max:10,
                avg:15,
                min:20
            },
            {
                max:8,
                avg:5,
                min:2
            }
        ];

        // 根据max字段对list对象进行排序,从小到大的顺序

        // x,y就是要比较的数组的单个元素,这里就是list中的一个元素
        // 排序方法主要是要提供一个比较大小的规则,换句话说也就是要说明谁大谁小
        // 返回值为true or false
        function sortByField(x, y) {
            return x.max - y.max;
        }

        console.log(list.sort(sortByField));



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值