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

时间:2018-06-08 15:15:43

标签: javascript for-loop foreach

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

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

3 个答案:

答案 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会生成数组的副本,但不会复制数组中的项。如果您正在处理数组中的对象而不是字符串等,这一点很重要。这意味着如果修改复制数组中的项目,原始数组中的相应项目也将被修改(反之亦然)。

enter image description here

以下是slice()上的MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

哦,作为奖励花絮,您还可以使用数组传播运算符(...)来完成数组的复制。我更喜欢使用slice,虽然它对我来说更具可读性,但对每个人来说都是可读的。

enter image description here

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