剖析Javascript中sort()使用方法,以及重写sort()里的排序方法,实现自定义排序

剖析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。

相关推荐

翅膀下的史诗:候鸟万里迁徙背后的生存密码
365bet网址是多少

翅膀下的史诗:候鸟万里迁徙背后的生存密码

📅 08-26 👁️ 2311
朱丽倩个人资料:刘德华老婆_朱丽倩女儿及儿子照片_身高近照
王者荣耀 芈月攻略:成为吸血女王的秘籍
365bet网址是多少

王者荣耀 芈月攻略:成为吸血女王的秘籍

📅 12-21 👁️ 6336