zoukankan      html  css  js  c++  java
  • sort对数组排序

    描述 

    Array的sort方法用于对原数组进行排序,不会产生新的数组。排序默认的规则是按照数组元素的字符编码进行排序。如果要按照自己的意愿对数组进行升序或者降序排序,就需要对sort传入一个比较函数,该方法有两个参数a,b进行比较,并且接收由两个参数比较所得的结果  a>b 返回值为1  a<b 返回值-1  a=b 返回值为0 。了解了这些我们就可以很方便的对各种数组进行排序,下面可以看一下具体的实例。

    一、sort的默认排序

    let ary=[1,3,5,4,3,7,0]
    console.log(ary.sort())//[0, 1, 3, 3, 4, 5, 7]
    let ary1 =[1,11,21,9,4,24]//[1, 11, 21, 24, 4, 9]
    console.log(ary1.sort())

    二、sort的升序或降序

    let ary3 = [1, 31, 14, 11, 22, 88, 53]
    console.log(ary3.sort((a, b) => { //[1, 11, 14, 22, 31, 53, 88]
    return a - b
    }))
    console.log(ary3.sort((a, b) => {//[88, 53, 31, 22, 14, 11, 1]
    return b - a
    }))
    let ary4 = ['he', 'Pg', 'ab', 'cd']
    console.log(ary4.sort((a, b) => { //["ab", "cd", "he", "Pg"]
    let a1 = a.toLowerCase();
    let b1 = b.toLowerCase();
    if (a1 < b1) return -1;
    if (a1 > b1) return 1;
    return 0;
    }))

    三、sort对数组对象按照特定字段的排序

       3.1:常规的数字或字母对象排序

    let objList = [{
            name: 'a',
            value: '1'
    }, {
            name: 'd',
            value: '12'
    }, {
            name: 'b',
            value: '11'
    }, {
            name: 'e',
            value: '9'
    }]
    objList.sort((a, b) => {
            return a.value - b.value
    })
    console.log(JSON.stringify(objList))//[{"name":"a","value":"1"},{"name":"e","value":"9"},{"name":"b","value":"11"},{"name":"d","value":"12"}]

       3.2、对value值为汉字的排序

     let objList1 = [{
                name: '科长',
                value: '1'
            }, {
                name: '行长',
                value: '12'
            }, {
                name: '金龟子',
                value: '11'
            }, {
                name: '阿拉伯',
                value: '9'
            }, {
                name: '创新',
                value: '91'
            }]
            objList1.sort((a, b) => {
                return a['name'].localeCompare(b['name'])
            })
            console.log(JSON.stringify(objList1))
    //[{"name":"阿拉伯","value":"9"},{"name":"创新","value":"91"},{"name":"金龟子","value":"11"},{"name":"科长","value":"1"},{"name":"行长","value":"12"}]

     注意,这里排序识别不了多音字。 按照我自己的理解(如:我们认为'行长' 对应的首字母是 H 但是 中文字库存的是 ‘X’)

    如有错误,请指出。谢谢!!

       

  • 相关阅读:
    快排笔记C++
    security+redis+jwt 一个登陆注册查询的例子
    centeros 配置好环境虚拟机下载(java git mysql maven nginx Python redis nodejs tomcat )
    ZwQueryInformationProcess 反调试代码
    c++ 创建进程设置窗口标题模拟键盘鼠标例子
    求一个数二进制中包含多少个1
    憨批是我
    憨批是我
    问卷星实现自动填表刷问卷(问卷星分析post协议实现 安卓版)
    前端面试题 -- 综合
  • 原文地址:https://www.cnblogs.com/Black-Skin/p/11385536.html
Copyright © 2011-2022 走看看