标签:形参 函数 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;
})
标签:形参 函数 dex 参数 两种 需要 掌握 turn 多次
原文地址:https://www.cnblogs.com/fannn/p/11686928.html