首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Resig Advanced Javascript p #43

Resig Advanced Javascript p #43
EN

Stack Overflow用户
提问于 2012-03-29 19:05:10
回答 1查看 218关注 0票数 0

弄不清楚这到底是怎么回事。我看过其他解决方案之一,但它是针对不同版本的问题的。

John Resig Advanced Javascript Question

具体地说,提到较老的问题,由于resig在这个问题之前的教程中根本没有使用"prototype“或"slice”,我想知道是否有不同的解决方案。

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

以下是问题的当前文本:

代码语言:javascript
复制
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时,它仍然可以通过所有测试。

EN

回答 1

Stack Overflow用户

发布于 2012-03-29 19:40:25

指的是你的排序功能的问题。如果将第一个断言中的数字顺序更改为:

代码语言:javascript
复制
assert(highest(3, 1, 1, 2)[0] == 3, "Get the highest value.");

那么,执行return a或return b将不再起作用。它们与当前断言一起工作,这只是一个巧合。

排序函数应返回

如果a的排名低于b,则

  • 小于零;如果a的排名高于b,则
  • 小于零;如果a的排名高于b,则
  • 大于零;如果a的排名高于b,则

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9924100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档