2 sfk1993 sfk1993 于 2016.03.10 14:15 提问

新手问题(JavaScript有关数组的排序问题)
js

例子:
arr.sort(orderby);
function orderby(a,b)

return a-b;

这样写不太明白为什么能对数值大小进行排序?图片说明

5个回答

Vincent_yoyo
Vincent_yoyo   2016.03.10 15:12
已采纳

arr.sort(compareFn);
compareFn - 一个用来确定数组元素排序顺序的比较函数。此参数是可选的。比较函数应该用两个参数进行比较。给定元素 A 和 B,compareFn 的结果可以具有负值、0 或正值:
若返回值为负,则表示 A 在排序后的序列中出现在 B 之前。
若返回值为 0,则表示 A 和 B 具有相同的排序顺序。
若返回值为正,则表示 A 在排序后的序列中出现在 B 之后。

你上面写的
arr.sort(orderby);
function orderby(a,b)

return a-b;

orderby就是比较函数compareFn,a,b值是arr数组的两个值,它会把里面的每个数组值都进行比较的

sfk1993
sfk1993 谢谢~
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.10 14:24

因为排序算法在sort内部实现了,唯一排序算法不确定的,是根据什么来排序,说白了就是给定两个数据,用什么规则判断谁大谁小。
而你传进去的orderby函数就是定义这个的。
sort会使用某种排序算法排序,在排序的过程中,会调用你的orderby来确定元素的大小关系。

tmgfdzh
tmgfdzh   2016.03.10 15:56

首先 js 是一种弱类型的语言, function orderby(a,b) 中 函数名orderby 可以做为函数的引用传入arr.sort(orderby) 中 ,
js的解释时,会自动根据orderby的返回值对数据arr进行排序。
其中a和b分别为arr中的元素。

linhaiguo
linhaiguo   2016.03.10 14:23

你这样写是有问题的。把代码贴完整啊

WinsenJiansbomber
WinsenJiansbomber   2016.03.10 14:24

oderby 是一个返回 bool的函数,true 表示需要进行调整顺序,JS解释器会按返回值进行相应的排序。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!