Получение данных (не индекса) в цикле for - PullRequest
0 голосов
/ 08 июня 2018

Как получить данные (не индексы) в этом цикле?l дает мне индекс, но мне нужны данные.

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

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

Я нашел ответ:

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]);
  }
}
0 голосов
/ 08 июня 2018

Ответ, опубликованный Бенни, верен: использование цикла for..of позволит вам перебирать массив, получая только элементы в массиве, а не свойства объекта массива.

ЭтоПри этом, если вы хотите скопировать массив, вы можете просто использовать функцию slice без параметров, чтобы сделать копию массива.

const letters = ['a','b','c','d'];
const arr = letters.slice();

Обратите внимание, что срез делает копиюмассив, он не делает копии элементов в массиве.Это важно, если вы имеете дело с объектами в массиве, а не со строками и тому подобным.Это означает, что если вы измените элемент в скопированном массиве, соответствующий элемент в исходном массиве также будет изменен (и наоборот).

enter image description here

Вот документы MDN по slice(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

О, и в качестве бонуса вы также можете использовать оператор распространения массива (...), чтобы сделать копию массива,Я предпочитаю использовать slice, хотя мне это кажется более читабельным, но каждому свое.

enter image description here

0 голосов
/ 08 июня 2018

Просто измените значение с for ... in ... на for ... of ... следующим образом:

this.letters = ['a','b','c','d'];
this.arr = [];
for (let l of this.letters) {
    this.arr.push(l);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...