在这个Javascript代码中返回-1,1和0的含义是什么?

时间:2011-11-27 00:44:41

标签: javascript

以下是上下文:

function compare (value1, value2) {
    if(value1 < value2) {
        return -1;
    } else if (value1 > value2) {
        return 1;
    } else {
        return 0;
    }
}

var values = [0, 6, 8, 5];
values.sort(compare);
alert(values); // 0,5,6,8

-1会返回最后一个参数吗?就像在数组中使用-1一样?

3 个答案:

答案 0 :(得分:15)

否,比较函数中的-1,0和1用于告诉调用者第一个值应该如何相对于第二个值进行排序。 -1表示第一个在第二个之前,1表示它在之后,0表示它们是等效的。

sort函数使用您传递的函数中的比较来对函数进行排序。例如,如果您想按相反的顺序排序,可以将第3行return 1;和第5行return -1排成一行。

答案 1 :(得分:6)

sort方法采用可选的比较函数,该函数根据以下内容确定生成的排序顺序:

  • 如果其返回值小于零,则将value1排序为低于value2的索引
  • 如果其返回值为零,则保持value1value2的索引相对于彼此保持不变
  • 如果其返回值大于零,则将value1排序为比value2更高的索引

请注意,根据这些规则,您可以将比较功能缩短为以下内容:

function compare(value1, value2) {
    return value1 - value2;
}

答案 2 :(得分:5)

-1表示value1小于value2

0表示value1等于value2

1表示value1大于value2