jeck猫
“compare”函数必须带两个参数,通常称为a和b。然后根据这些值a和b使比较函数返回0,大于0或小于0 。如果a大于b,则返回大于0如果a等于b,则返回0如果a小于b,则返回小于0使用这三个返回值,并且只有两个参数,可以编写一个比较函数,可以对任何类型的输入数据类型或复杂数据结构进行排序。然后,当您使用自定义比较函数调用sort()时,将在待排序列表中的对上调用compare函数,以确定正确的排序。让我们来看一个简单的例子......假设你只是对一些数字进行排序,所以我们有一个非常简单的比较函数:function compare(a,b) { return a - b;}如果a大于b则简单地从a中减去b将总是返回大于0,如果它们相等则返回0,或者如果a小于b则小于零。因此它符合比较功能的要求。现在让我们假设这是我们要排序的数字列表:var numbers = [1,5,3.14];当你在numbers.sort(compare)内部调用时,它将实际执行:compare(1,5); // Returns -4, a is less than bcompare(1,3.14); // Return -2.14, a is less than bcompare(5,3.14); // returns 1.86, a is greater than b如果您曾经进行过手动排序或字母顺序排列,那么您完全可以做同样的事情,可能没有意识到。即使您可能需要比较几十个或几百个项目,但您一次只能比较两个数字(或作者姓氏或其他)。再次查看三个数字或短名单,首先要比较前两个数字:1大于或小于5?不到,所以把这两个数字放在我们的清单中:1,53.14大于或小于1?大于,所以它在新列表中追逐1在我们的新清单中3.14是大于还是小于5?不到,所以它在5之前。我们的新名单现在是[1,3.14,5]因为您可以提供自己的compare()函数,所以可以对任意复杂的数据进行排序,而不仅仅是数字。