JavaScript自定义数组排序

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));
JavaScript自定义数组排序_第1张图片



你可能感兴趣的:(JavaScript,排序,sort,数组排序,自定义数组排序)