码迷,mamicode.com
首页 > Web开发 > 详细

JS sort() 函数

时间:2019-10-16 18:11:59      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:形参   函数   dex   参数   两种   需要   掌握   turn   多次   

说实话,看源码没看懂,作为一个码农来说是很失败了。
虽然想要 知其然而知其所以然,然而技术太菜没办法,只能先把表面使用掌握了。

JS 的sort函数,有传参和不传参两种模式,不传参我这里就不说了,随便看看都能掌握。
这里对传参做一下记录,好让自己以后忘记了可以快速记起来(只是适用于我自己快速捡起的方式)

传参的类型为函数,函数又有两个形参a和b,
function (a, b) {
return a - b
}

数组会根据传入的函数的返回值去进行排序。

我这里只能浮于表面的来对自己进行一些强行的规则注释(以此来帮助我自己记住如何使用):

 

sort函数默认是从小到大进行排序的,函数传入两个参数,顺序为(a, b)

如果需要从小到大排序,那么就需要 return a - b;(死记硬背)
如果想要从大到小排序,那么就返回 return b - a.

------

如果数组的内容是对象,就比较对象的值: return a.xx - b.xx

这里还可以进行多次排序,当排序条件一相等时,进行条件二的排序...以此类推

当 a.xx === b.xx 的时候

return a.yy - b.yy //当xx相等的时候,按yy从小到大排序
return b.yy - a.yy //当xx相等的时候,按yy从大到小排序


------

最后还有需要注意一点的就是
如果return 的表达式中,没有a,b参与,直接返回 数字,分为两种情况

return 1 //数组原样输出,不排序
return 0 //数组原样输出,不排序
return -1 //数组倒序


------代码尝试console.log看结果


let arr1 = [1, 4, 2, 5, 6, 7, 9, 8, 3, 0];
let arr2 = [
{ v: 1, index: 0, key: 1 },
{ v: 10, index: 1, key: 1 },
{ v: 2, index: 2, key: 1 },
{ v: 5, index: 3, key: 1 },
{ v: 5, index: 1, key: 1 },
{ v: 5, index: 14, key: 1 },
{ v: 5, index: 2, key: 1 },
{ v: 5, index: 2, key: 8 },
{ v: 5, index: 2, key: 4 },
{ v: 5, index: 2, key: 7 },
{ v: 5, index: 2, key: 6 },
{ v: 5, index: 4, key: 1 },
{ v: 5, index: 34, key: 1 },
{ v: 7, index: 5, key: 1 },
{ v: 6, index: 6, key: 1 },
{ v: 5, index: 7, key: 1 },
{ v: 8, index: 8, key: 1 },
{ v: 1, index: 9, key: 1 },
{ v: 3, index: 10, key: 1 }
];
let arr3 = arr2.sort(function (a, b) {
  return b.v === a.v ? b.index === a.index ? b.key - a.key : b.index - a.index : a.v - b.v;
})

 

JS sort() 函数

标签:形参   函数   dex   参数   两种   需要   掌握   turn   多次   

原文地址:https://www.cnblogs.com/fannn/p/11686928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!