<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>sort</title> </head> <body> </body> <script type="text/javascript"> function compare(value1,value2){ if(value1>value2){ return -1; }else if(value1<value2){ return 1; }else{ return 0; } } function compare1(value1,value2){ if(value1>value2){ return 1; }else if(value1<value2){ return -1; }else{ return 0; } } var array = [3,7,2,8,2,782,7,29,1,3,0,34]; console.log(array.sort(compare));//[782, 34, 29, 8, 7, 7, 3, 3, 2, 2, 1, 0] console.log(array.sort(compare1));//[0, 1, 2, 2, 3, 3, 7, 7, 8, 29, 34, 782] </script> </html>
想问下就是compare跟compare1有什么区别呢,为什么可以让一个实现倒序一个实现顺序呢,return -1,跟return 1??求大神赐教
这跟C#没什么区别吧?sort可以传一个自定义函数来让你自定义排序规则。。。
在C#中,比如你要对比两个person,编译器怎么知道两个person谁大谁小啊?你自定义排序规则,比如:你自己定义,两个人年龄大的就是大;可以,定义:两个人身高高的就是大,也可以;就是这样。。。
而在sort函数里面,已经定义好了,如果两个比较,大于0就是前面大,小于0就是后面大,仅此而已。。。
你的意思是return -1就2,1;return 1就1,2这个是定义好的?并没有什么特别的?
@小码农雯: 对,return-1的你可以让他return-2试试?应该是一样的。。。
要是真的是定义好的没有其他别的含义的话我能理解,但是我不懂为什么要这样定义呢
@小码农雯: 。。。这个问题就不好回答了,就是这么定义的,这样定义不是挺好的么?1是有一个默认排序规则来排序,另外你可以自定义排序规则。。。
@顾晓北: 哈哈 谢谢谢谢
compare和compare1是你定义的函数名,下面只不过是调用的那个函数
我知道,但是我就是想问下这两个函数的区别在哪里?
@小码农雯: 区别就在返回值上,先是两个数比较,1和-1的区别也就是排序的顺序,如果1>2,输出为-1;
则排序为2,1;如果输出为1,则为1,2;就是给你定义一个排序的函数;
@爱吃的馒头: 想问下就是为什么输入-1的时候会排序会2,1呢输入1的时候会1,2呢
@小码农雯: 没有无语,哈哈,那时候有点事,怎么样,现在明白了吗?
@爱吃的馒头: 嘿嘿 现在听他们这么说差不多明白了
@小码农雯: 嗯嗯,那就行,明白了就可以了!
1和-1是指什么情况下需要将比较的两个值交换位置,还有值不一定是1或-1而是正数或者是负数,所以这两个函数不用这么麻烦compare(value1,value2){return (value2-value1)}
compare1(value1,value2){return (value1-value2)}
还是同样的问题 return -1就2,1;return 1就1,2为什么呢?
@小码农雯:排序默认是如果前一个和后一个做差比较,如果返回结果大于0就交换位置,也就是说默认就是升序,为了达到倒叙就必须强制改变差值返回来达到了。
@筱申: 哈哈 谢谢谢谢 大概懂了
设个断点不就知道它是如何执行了吗
??不懂
@小码农雯: 你是用vs 开发吧,那你百度一下,vs怎样调试代码
@181027923: 不是哦 我是用sublime开发
@小码农雯: Sublime Text中写完的代码在谷歌浏览器中运行时也可以设置断点