如何在此循环中获取数据(而不是索引)?
l
给了我索引,但我需要数据。
this.letters = ['a','b','c','d'];
this.arr = [];
for (let l in this.letters) {
this.arr.push(l);
}
答案 0 :(得分:2)
只需从for ... in ...
更改为for ... of ...
,如下所示:
this.letters = ['a','b','c','d'];
this.arr = [];
for (let l of this.letters) {
this.arr.push(l);
}
答案 1 :(得分:1)
Benny发布的答案是正确的,使用for..of循环将允许您迭代数组只获取数组中的项而不是数组对象的属性。
话虽这么说,如果你想复制一个数组,你可以简单地使用没有参数的slice
函数来复制数组。
const letters = ['a','b','c','d'];
const arr = letters.slice();
请注意,slice会生成数组的副本,但不会复制数组中的项。如果您正在处理数组中的对象而不是字符串等,这一点很重要。这意味着如果修改复制数组中的项目,原始数组中的相应项目也将被修改(反之亦然)。
以下是slice()
上的MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
哦,作为奖励花絮,您还可以使用数组传播运算符(...
)来完成数组的复制。我更喜欢使用slice
,虽然它对我来说更具可读性,但对每个人来说都是可读的。
答案 2 :(得分:0)
我找到了答案:
this.letters = ['a','b','c','d'];
this.arr = [];
for( let i in this.letters) {
if (this.letters.hasOwnProperty(l)) {
this.todos.push(this.letters[l]);
}
}