任何人都可以帮助我告诉我我的 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/