Resig Advanced Javascript p#43

时间:2012-03-29 11:05:10

标签: javascript

在弄清楚这有什么问题时遇到了一些麻烦。看看其他解决方案之一,但它是针对问题的不同版本。

John Resig Advanced Javascript Question

具体来说,参考旧问题,由于在此问题之前,教程中的resig根本没有使用“原型”或“切片”,我想知道是否有不同的解决方案。

http://ejohn.org/apps/learn/#43

这是问题的当前文本:

function highest(){ 
  return arguments.sort(function(a,b){ 
    return b - a; 
  }); 
} 
assert(highest(1, 1, 2, 3)[0] == 3, "Get the highest value."); 
assert(highest(3, 1, 2, 3, 4, 5)[1] == 4, "Verify the results.");

我也很难理解为什么回归中的“b - a”。当改为b或只是a时,它仍会通过所有测试。

1 个答案:

答案 0 :(得分:0)

使用sort函数引用您的问题。如果将第一个断言中的数字顺序更改为:

assert(highest(3, 1, 1, 2)[0] == 3, "Get the highest value.");

然后返回a或返回b将不再起作用。他们使用当前的断言只是巧合。

排序函数应该返回

    如果a排名低于b ,则
  • 小于零
  • 如果相等则为零
  • 如果a排名高于b ,则
  • 大于零

所以b-a按降序返回数字。

如果你进入John Resig教程的下两页(#44和#45),你会看到他引入了一个makeArray函数(http://ejohn.org/apps/learn/#45)来解决将参数集合转换为数组的问题。