【问题标题】:What do return -1, 1, and 0 mean in this Javascript code?在这段 Javascript 代码中,返回 -1、1 和 0 是什么意思?
【发布时间】:2011-11-27 00:44:40
【问题描述】:

这里是上下文:

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 一样?

【问题讨论】:

  • 按索引访问参数看起来像arguments[0],它不会接受负数。

标签: javascript


【解决方案1】:

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

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

【讨论】:

  • 谢谢,它更有意义
【解决方案2】:

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

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

请注意,鉴于这些规则,您可以将比较函数缩短为以下内容:

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

【讨论】:

  • 老实说,我认为这个答案应该得到比我更多的支持。
  • @harrison_m:好吧,你可以随意删除你的。 ;p
【解决方案3】:

-1 表示value1 小于value2

0 表示value1 等于value2

1 表示value1 大于value2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2012-09-06
    • 1970-01-01
    相关资源
    最近更新 更多