javascript - 为什么 return -1 在 JavaScript 中将数组的第一个值排序在第二个值之前

标签 javascript arrays sorting comparator

   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 表示它在第二个之后,但这背后的逻辑是什么? -1 0 和 1 是否适用于排序以外的方法?

最佳答案

我喜欢考虑的方式是,如果你从 b 中减去两个数字 a,你会得到一个负数,这一定意味着 b code> 更大,如果你得到一个正数,那么 a 更大,如果你得到 0 那么它们都是相等的。 sort() 将根据较小、较大和相等进行排序。

例如:

-1的情况

a = 6 and b = 7
a - b = -1 // b is larger

情况1

a = 6 and b = 5
a - b = 1 // a is larger 

0的情况

a = 6 and b = 6 
a - b = 0 // both are equal

关于javascript - 为什么 return -1 在 JavaScript 中将数组的第一个值排序在第二个值之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42429241/

相关文章:

Javascript 无法在移动设备上正确触发 - iOS/Android

javascript - 在将不同的 ajax 调用写入页面之前对它们进行排序

php laravel 数组 excel mongodb

c - valgrind 发现无效写入和读取的数量令人难以置信

c++ - x = malloc(n * sizeof (int));无法将 void 转换为 int

javascript - AngularJS-如何实现Angular中的点击

javascript - 在 Javascript 中替换 innerHTML 后,复选框上的 OnClick 事件在 IE 中不起作用

javascript - 使用带行索引和链接的javascript动态删除HTML表行

javascript - JqPlot(JQuery) 对图例标签进行排序

c++ - 排序给出最后位置元素的错误输出