为了账号安全,请及时绑定邮箱和手机立即绑定

关于排序方法函数的问题?

为什么在左侧的讲解中说:“若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。

若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。”

比较迷惑他说的这个是这个只针对整数么?

对于小数是否应以0分界?

正在回答

3 回答

你试一下不就行了吗?你把数组里的数改成小数,排一下就明白了。

0 回复 有任何疑惑可以回复我~
#1

慕桂英7260340 提问者

嗯,我明白了,但我不明白他这么写有什么意义。。。。
2016-01-02 回复 有任何疑惑可以回复我~

我认为这种表述方式不对,应该改为:

比较函数的要求:该函数要比较两个值,然后返回一个用于说明(我也不知道该怎么说了)。比较函数应该具有两个参数 a 和 b,其返回值如下: 

若返回值<0,则表示根据排序要求A 在排序后的序列中出现在 B 之前。
若返回值=0,则表示根据排序要求 A 和 B 具有相同的排序顺序。
若返回值>0,则表示根据排序要求A 在排序后的序列中出现在 B 之后。

(可参照你的问小数怎么问题)

举个栗子:

//定义一个数组,数组里的每个元素都是字符串
var myarr1=['love','I','java','javascript','php'];

//如果我要根据数组里面的元素的字符数量正序排列,要这么定义函数
function sortStr(a,b){
    return a.length-b.length; 
    //倒序则换成b.length-a.length;
}

//运行测试一下
document.write(myarr1+"<br>");//原始数组
document.write(myarr1.sort(sortStr)+"<br><br>");//排序后


1 回复 有任何疑惑可以回复我~

a 和b的顺序是按照返回值来定义的前后顺序,比如a,b如果是2,3,那么升序的return(a-b);看值是-1按照定义是不是a在b前,如果返回值是return(b-a)看值是1,定义里说如果返回值是1,那么a在b的后面,所以理解这个不要被a-b或者b-a给迷惑了,他只是为了得出返回值的大小决定a,b两个数的前后顺序,不要理解为b-a的值是1,所以b在a后面刚好,因为定义里面的是返回值大于1,a在b后哟,按定义来就不会错的。

0 回复 有任何疑惑可以回复我~
#1

慕桂英7260340 提问者

嗯,所以他只是针对整数情况下来说的。倒不如直接说大于0还是小于0了
2016-01-05 回复 有任何疑惑可以回复我~
#2

慕桂英7260340 提问者

而且既然是对于整数来说的 又说 >-1 && <1 那不是明白着就是0了,感觉有些误导性, 我最初理解的就是排序 最简单的方法就是减法嘛。。 他非要说什么1什么,我就以为那就是对于整数了,整数减法呗。 后来又说 >-1 && <1,让我一头雾水啊,这既然是整数了,还有什么 >-1 && <1啊 明明就只是0啊。 我还以为JS这是故意以1分界有什么我不知道的用意呢。。。。。
2016-01-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468043    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

关于排序方法函数的问题?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信