返回类型 1、-1 和 0 在排序函数中起什么作用?

Abh*_*ore 4 javascript sorting

这是作为实现对象排序问题的答案给出的工作代码,它工作得很好。由于我是 JavaScript 新手,我不明白返回类型到底是做什么的。谁能解释一下吗?

var people= [
     {
        "f_name": "john",
        "l_name": "doe",
        "sequence": "0",
        "title" : "president",
        "url" : "google.com",
        "color" : "333333",
    }
    // etc
];

function sortResults(prop, asc) {
    people = people.sort(function(a, b) {
        if (asc) return (a[prop] > b[prop]) ? 1 : ((a[prop] < b[prop]) ? -1 : 0);
        else return (b[prop] > a[prop]) ? 1 : ((b[prop] < a[prop]) ? -1 : 0);
    });
    showResults();
}
Run Code Online (Sandbox Code Playgroud)

参数'prop'是需要进行排序的propertyName,asc是一个布尔类型,如果为true则按asc顺序排序,如果为false则按desc顺序排序。

Ami*_*oki 7

Array.sort与 无关jQuery。请记住,这jQuery是另一个用 javascript 开发的库。

MDN 已经解释了这一点:

如果compareFunction提供,则根据比较函数的返回值对数组元素进行排序。如果a和b是两个被比较的元素,那么:

  1. 如果compareFunction(a, b)小于0,则排序a到比 更低的索引 b,即a排在第一位。

  2. 如果compareFunction(a, b)返回0,则ab彼此保持不变,但对所有不同元素进行排序。注意:ECMAscript 标准不保证这种行为,因此并非所有浏览器(例如至少可以追溯到 2003 年的 Mozilla 版本)都尊重这一点。

  3. 如果compareFunction(a, b) 大于 0,则排序b到低于 的索引a

  4. compareFunction(a, b)当给定一对特定元素a及其b两个参数时,必须始终返回相同的值。如果返回的结果不一致,则排序顺序为undefined

不强制只返回-11