这段Javascript代码中,返回值-1、1和0分别代表什么意思?

11
这里是上下文:
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],而且它不支持负数。 - RightSaidFred
4个回答

26

在比较函数中,-1、0和1用于告诉调用者第一个值与第二个值的排序关系。-1表示第一个值排在第二个值前面,1表示它排在后面,0表示它们相等。

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


1
谢谢,现在更有意义了。 - Briefbreaddd

13

sort 方法接受一个可选的比较函数,该函数基于以下规则确定排序结果:

  • 如果比较函数的返回值小于 0,则将 value1 排在比 value2 小的索引位置
  • 如果比较函数的返回值等于 0,则相对于彼此保持 value1value2 的索引不变
  • 如果比较函数的返回值大于 0,则将 value1 排在比 value2 大的索引位置

请注意,根据这些规则,可以将您的比较函数缩短为以下形式:

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

4
说实话,我认为这个回答应该比我的得到更多的赞同。 - Hal
@harrison_m:好吧,你可以自由删除你的。;p - RightSaidFred

5

-1 表示 value1 小于 value2

0 表示 value1 等于 value2

1 表示 value1 大于 value2


0

// filter in array
function filterDataByInput(){
    let searchInput = document.getElementById('searchInput').value;
    let result = userDetails.filter(function (value){
        return value.name.toLowerCase().indexOf(searchInput.toLowerCase()) > -1;
    });
    console.log(result)
}

-1 从 abcd 开始搜索 0 从 abcd 开始搜索 1 从 abcd 开始搜索


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接