zoukankan      html  css  js  c++  java
  • 剖析Javascript中sort()使用方法,以及重写sort()里的排序方法,实现自定义排序

    语法:arrayObject.sort([compareFunction]);参数compareFunction可选。规定排序顺序,必须是函数。

    sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点

    // compare函数的基本操作
    function compare(a, b){
        if (根据某种排序标准a小于b) {
           return -1
        }
       if (根据某种排序标准a大于b) {
           return 1
        }
       // a === b
       return 0
    }

    下面来看一个例子:

    var students = [
        {age: 18, name: "tom"},
        {age: 20, name: "jack"},
        {age: 19, name: "bob"}
    ]
    // 现在对学生的姓名进行排序
    students.sort(
        (a, b) => {
            return (a.name < b.name) ? -1 : (a.name > b.name) ? 1 : 0
        }
    )

    结果如下↓

    把名字换成年龄

    // 对学生按年龄进行排序
    students.sort(
        (a, b) => {
            return (a.age < b.age) ? -1 : (a.age > b.age) ? 1 : 0
        }
    )

    这两种排序就等于用了同样的代码,那我们可不可以封装成一个统一的方法呢

    来试一下↓

    // 统一封装
    const sortBy = (key) => {
        return (a, b) => {
            var result = (a[key] < b[key]) ? -1 : (a[key] > b[key]) ? 1 : 0
            return result
        }
    }

    sortBy()函数接收一个参数并返回一个接收两个参数的新函数====(这里就是闭包的强大之处)

    下面我们就可以这样使用sort了

    students.sort(sortBy("name"))

    看看结果↓

     

    和上面在()里写方法的结果一样啊    

    这样以后我们不管students每条数据有多少个key,我们想按照哪个key排序就输入那个key就可以了

     It’s great!

    --------------------------------------------------------------------------------------

    V8 引擎 sort 函数只给出了两种排序 InsertionSort 和 QuickSort,数量小于10的数组使用 InsertionSort,比10大的数组则使用 QuickSort。

  • 相关阅读:
    凹凸函数
    HashMap数据类型使用注意不能使用基本数据类型
    Tomcat部署发布JSP应用程序的三种方法
    Ubuntu忘记密码,进不了系统的解决方法
    matlab之运算符及其优先级
    java和tomcat配置
    MySQL中 MySQL X.X Command Line Client 一闪而过
    Pearson(皮尔逊)相关系数
    CG, DCG, NDCG
    C#中ListBox中SelectedItem使用注意
  • 原文地址:https://www.cnblogs.com/bobo1/p/11380607.html
Copyright © 2011-2022 走看看