alonehunter
2018-12-24 15:45
function(a,b){ return a-b; }
为什么返回 a-b就是升序, 返回b-a就是降序,原理是什么
相当于数组下标a和数组下标b进行比较,若a-b大于零,即为真(true)即下标互换位置,若小于零即为假(flase),及不变,可以吧a-b和b-a看作为a>b和b>a,真即运行,假即跳过.
不用知道会用就行了,细枝末节的东西全学会就是浪费精力,工作后也是靠偷和改。主要是能看懂和会用。
我觉得指的是ASCII码,a97,b98,a-b是按ASCII码升序
该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。
sortNum函数 计算的就是数组里面的元素,如果是return b-a 就是用数组后面的数-减去前面数,获得一个数字
可以是 -9999 也可以是 9999 随便一个数 但是 retrun 出来的 结果 传入 myarr.sort()这个 方法后他会判断是否大于1 如果大于1 那说明 后面的数大于前面的数字 也就是b大于a 那么就会把b和a 交换 他应该是从最左边开始比较 如果大就交换 把最小的数字放在最后 如此多次重复 把数组的数字 排序好(也就是冒泡排序 当然也可能是其他的交换排序 比如简单交换排序) 总的来说 myarr.sort() 以及把功能实现给我们了 我们只要调用就行了
我觉得a,b传递的应该是数组中前后相邻的两个元素,其排序原理类似于c语言中的冒泡法,a-b升序即一个有n个元素的数组中两个相邻元素元素比较大小大的数排序,从而使最大的那个数排到最后,然后在对数组前n-1各元素做相同处理,以此类推从而达到升序排列,b-a降序道理也是一样
可以看一下sort方法的实现代码
同问 有知道原理的吗
看前边的视频
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题