• 快速实现数组排序sort


    快速实现排序sort

    arr.sort([compareFunction])

    1. 如果未指明compareFunction函数,直接写arr.sort(),会自动按照每个元素转换为的字符串的Unicode编码值进行排序(用于字符串排序)

    2. 如果指明compareFunction函数,则比较的是数字而非字符串

    compareFunction(a,b)有两个参数,如果返回的是a-b则是升序如果返回的是b-a则是降序

    例题

    let array1 = [32, 34, 1, 6, 45, 54, 3, 7, 5, 4];
    array1.sort();
    // sort()默认
    // 未指明compareFunction,那么元素会按照转换为的字符串的诸个字符的Unicode位点进行排序
    console.log(array1);   // [1, 3, 32, 34, 4, 45, 5, 54, 6, 7]
    ​
    array1.sort((a, b) => a - b)
    console.log(array1)    // [1, 3, 4, 5, 6, 7, 32, 34, 45, 54]
    ​
    array1.sort((a, b) => b - a)
    console.log(array1)       //[54, 45, 34, 32, 7, 6, 5, 4, 3, 1] 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3. 数组是个对象,对对象的值进行排序

    按age(数值)

    let array2 = [{ name: 'lk', age: 23 }, { name: 'zy', age: 15 }, { name: 'ij', age: 27 }, { name: 'er', age: 13 }]
    array2.sort(function (a, b) {
        return (a.age - b.age)    // 依据age排序,一定要return
    })
    console.log(array2) 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    结果

    按name(字符串)

    let array2 = [{ name: 'lk', age: 23 }, { name: 'zy', age: 15 }, { name: 'ij', age: 27 }, { name: 'er', age: 13 }]
    array2.sort(function (a, b) {
        if (a.name > b.name) {     // < 就是降序
            return 1;   //return的值大于0 就返回正序小于0就是降序
      } else {
            return -1; 
      }
    })
    console.log(array2) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    结果

    最后

    最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



    有需要的小伙伴,可以点击下方卡片领取,无偿分享

  • 相关阅读:
    零信任安全:构建无懈可击的网络防护体系
    JAVA基础(三十六)——常用类之String类
    从旧金山到上海, HTTP/3 非常快!
    HOW TO EASILY CREATE BARPLOTS WITH ERROR BARS IN R
    【计算机网络 二 物理层】
    什么是数据标注? 数据标注公司主要做什么?
    多线程与高并发——并发编程(7)
    Jenkins buildDescription 设置html格式及url
    HashMap 是怎么解决哈希冲突的?
    Influxdb数据库部署文档
  • 原文地址:https://blog.csdn.net/pfourfire/article/details/127758113