【问题标题】:Arguments Object参数对象
【发布时间】:2021-12-28 00:54:07
【问题描述】:

我目前正在学习 js,需要通过测试,除了“应该在参数对象上工作”之外,每个要求都会检查。

所以我需要使用arguments[0]或[1],我也需要检查数组是否为数组。这里的问题是,由于某种原因,代码的 Array.isArray() 部分将我的“应该在参数对象上工作”要求变为错误,即使我使用了 arguments[0]。

请尽量忽略其余代码,还有其他要求设置。我知道它们似乎没有必要包括在内。

这是我的代码:

function (array, n) {
  var resultArray = [];if (typeof arguments[1] !== "number" || arguments[1] == 0 || arguments[1] < 0){
  resultArray.push.call(resultArray, arguments[0][0])
  return resultArray
 } 
  else if (arguments[1] > arguments[0].length){
  return arguments[0] && array
 } else {
 return resultArray;
}
};

【问题讨论】:

  • 您的代码似乎充满了冗余
  • 但它工作正常,我无法重现该问题
  • @skara9 因为我还需要满足其他要求,所以我只是没有将它们包括在这里,因为我唯一没有得到的部分是为什么“if (Array.isArray(arguments[0] ) !== true){ return []} “在我的“使用参数对象”要求中给了我一个错误
  • 谁/什么给了你假的,他们是如何检查的?
  • 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已根据 CC BY-SA license 授予 SE 分发内容的不可撤销权利(即无论您未来的选择如何)。根据 SE 政策,分发非破坏版本。因此,任何破坏行为都将被撤销。请参阅:How does deleting work? …。如果允许删除,则帖子下方左侧有一个“删除”按钮,但仅在浏览器中,而不是移动应用程序中。

标签: javascript arrays object arguments


【解决方案1】:

这是因为要求要求您在某处使用变量参数array。相反,您使用arguments[0]

所以使用前者而不是后者。
同样,使用n 而不是arguments[1]

【讨论】:

  • 嘿 Roko,感谢您的帮助。问题是它也是使用 arguments[0] 和 [1] 的要求
  • @Hey 但比arrayn 根本没有意义。
  • 在这种情况下是的,但它是一个测试,所以参数由他们给出。我无法改变这一点
【解决方案2】:

你可以简单地使用Array.prototype.slice函数

const first = (array = [], n = 1) =>
    Array.isArray(array) ? array.slice(0, array.length >= n ? n : 1) : [];

如果 n &gt; array.length 这将返回整个数组。

【讨论】:

  • 嘿,谢谢你的帮助。但是该功能有效,因此前几行中 cmets 中的问题得到了解决。只是这行代码: if (Array.isArray(arguments[0]) !== true){ return []} 抛出了我的“使用参数对象”要求,我不知道为什么。
【解决方案3】:

试试这个:

if (!window[atob('QXJyYXk=')][atob('aXNBcnJheQ==')](arguments[0])) return [];

【讨论】:

  • 问题可能是由某种标记字符串Array.isArray的软件引起的,所以我认为值得测试
猜你喜欢
  • 2015-04-21
  • 2010-11-08
  • 2015-02-04
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多