Javascript 正在for循环中获取数据(不是索引)

Javascript 正在for循环中获取数据(不是索引),javascript,for-loop,foreach,Javascript,For Loop,Foreach,如何获取此循环中的数据(而不是索引)? l给了我索引,但我需要数据 this.letters = ['a','b','c','d']; this.arr = []; for (let l in this.letters) { this.arr.push(l); } 只需从更改为。。。在…至中,用于。。。以下是……: this.letters = ['a','b','c','d']; this.arr = []; for (let l of this.letters) { thi

如何获取此循环中的数据(而不是索引)?
l
给了我索引,但我需要数据

this.letters = ['a','b','c','d'];
this.arr = [];
for (let l in this.letters) {
    this.arr.push(l);
}

只需从
更改为。。。在…
中,用于。。。以下是……

this.letters = ['a','b','c','d'];
this.arr = [];
for (let l of this.letters) {
    this.arr.push(l);
}
我找到了答案:

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]);
  }
}

Benny给出的答案是正确的,使用for..of循环将允许您在数组上迭代,只获取数组中的项,而不获取数组对象的属性

也就是说,如果要复制数组,只需使用不带参数的
slice
函数即可复制数组

const letters = ['a','b','c','d'];
const arr = letters.slice();
请注意,slice创建数组的副本,而不复制数组中的项。如果您处理的是数组中的对象,而不是字符串等,这一点很重要。这意味着,如果修改复制数组中的项,则原始数组中的相应项也将被修改(反之亦然)

以下是
slice()
上的MDN文档:

哦,作为一个额外的花絮,您还可以使用数组扩展操作符(
)来完成数组的复制。我更喜欢使用
slice
,虽然我觉得它更易读,但每个人都有自己的想法


这个问题的另一个答案将为您解决这个问题。for…of循环是在ES2015+中实现这一点的正确方法。也就是说,有一种更简单的方法来完成代码中的工作。我会发布一个答案。