返回类型1,-1和0在排序函数中做什么?

时间:2015-04-06 08:13:11

标签: 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();
}

参数'prop'是propertyName,基于哪个排序需要完成,asc是一个布尔类型,如果为true则按asc顺序排序,如果为false则按desc顺序排序。

2 个答案:

答案 0 :(得分:4)

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

The MDN explains this already:

  

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

     
      
  1. 如果compareFunction(a, b)小于0,请将a排序为低于b   a,即compareFunction(a, b)首先出现。

  2.   
  3. 如果0返回a,请离开b和   compareFunction(a, b)相对于彼此保持不变,但相对于所有人而言   不同的元素。注意:ECMAscript标准不保证   这种行为,因而并非所有浏览器(例如Mozilla版本   追溯到至少2003年)尊重这一点。

  4.   
  5. 如果b   大于0时,将a排序为低于compareFunction(a, b)的索引。

  6.   在给定特定对时,
  7. a必须始终返回相同的值   元素bundefined作为其两个参数。如果结果不一致   然后返回排序顺序为-1

  8.   

并非强制要求仅返回1或{{1}}。

答案 1 :(得分:0)

嗯,它返回2个元素相对于彼此的排序方式。

如果它为-1则表示元素应该交换,因为它们是相反的顺序。 如果

如果它是1,则意味着元素的顺序正确。

如果它为0则表示元素相等或位置相同,因此它们的顺序并不重要。