Javascript:在循环中使用 array.slice() 并且没有按预期工作

标签 javascript

任何人都可以帮助我告诉我我的 Javascript 代码有什么问题吗?

var a = ["zero", "one", "two", "three"];
for (var i in a) {
  var sliced = a.slice(i + 1);
  console.log(sliced);
}

控制台日志给出:["one", "two", "three"],[],[],[]

但我期望的是:["one", "two", "three"],["two", "three"],["three"],[]

那么,为什么我的代码不起作用?我应该如何编码? 非常感谢。

最佳答案

您需要将字符串解析为数字,因为 for...in语句获取将是 string 的对象属性。所以在第二次迭代中,它会尝试做 a.slice('11')(string cocatenation '1' + 1 ==> '11' ) 返回一个空数组。

var a = ["zero", "one", "two", "three"];
for (var i in a) {
  var sliced = a.slice(Number(i) + 1);
  console.log(sliced);
}

因为它是一个数组,所以最好使用一个带有从 1 开始的计数器变量 i 的 for 循环。

var a = ["zero", "one", "two", "three"];
for (var i = 1; i < a.length; i++) {
  var sliced = a.slice(i);
  console.log(sliced);
}

关于Javascript:在循环中使用 array.slice() 并且没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41821005/

相关文章:

javascript - 从两个绝对路径构造 JavaScript 中的相对路径

javascript - 错误验证 W3C HTML5 img noscript facebook.com

javascript - 必须单击提交按钮两次才能提交表单 - Java 脚本修复不起作用

javascript - 使用 JavaScript 验证 PIN - SyntaxError : Unexpected token )

JavaScript 闭包。在循环中访问当前 i, j 变量

javascript - 如何在 SetTimeout 之后运行另一个函数?

javascript - 使用 jQuery 滑动动态添加的内容

javascript - 拖动节点时如何使 d3js 力有向图不那么不稳定?

Javascript:Unicode 符号选择器(用于将数学符号添加到文本区域)

javascript - 为什么看起来像是来自 Electron 中一个菜单项的 IPC 消息到达我的窗口,但从另一个菜单项发送时却没有?