我知道排序数组,但我有一个问题,我很想知道。
例如:
var array = [9,3,0,-2,15];
所以,让我们对它进行排序:
function sortFunction(a, b){
if(a < b) return -1; // or any number that less than zero, but why?
if(a > b) return 1; // or any number that above zero, but why?
if(a = b) return 0; // but why?
// I know it may be easier a - b, I've written it for clarity
}
array.sort(sortFunction); //so we'll get correct result
如何理解为什么必须返回-1,1和0来排序数组?
P.S。对不起,如果问题似乎很愚蠢,我还没有在谷歌找到答案。
答案 0 :(得分:2)
来自MDN:
- 如果compareFunction(a,b)小于0,则将a排序为低于b的索引,即a先出现。
- 如果compareFunction(a,b)返回0,则保持a和b相对于彼此保持不变,但是对于所有不同的 元素。注意:ECMAscript标准不保证这一点 行为,因而并非所有浏览器(例如Mozilla版本约会 回到至少2003年)尊重这一点。
- 如果compareFunction(a,b)大于0,则将b排序为低于a的索引。
有三种结果,因此有三种可能的返回值。