Итак, как вы пишете итерацию в java-скрипте? Давайте посмотрим, как можно использовать циклы.
Рассмотрим массив, и нам нужно вывести имена.
let persons = [ { name: "Jon Doe", id: 1 }, { name: "Alex Robert", id: 2 } ]
Давайте повторим это с помощью традиционного цикла for.
for (let i = 0; i < persons.length; i++) { console.log(persons[i].name) } /* Output Jon Doe Alex Robert */
Теперь позвольте повторить это с помощью цикла for… in.
for (let person in persons) { console.log(persons[person].name) }
Выход будет таким же. Давайте подробно обсудим цикл for… in
Цикл for...in
выполняет итерацию только по перечислимым свойствам. Поэтому рекомендуется перебирать свойства объекта. Индексы массивов - это просто перечислимые свойства с целочисленными именами, которые в остальном идентичны общим свойствам объекта. Нет гарантии, что for...in
вернет индексы в каком-либо определенном порядке. Оператор цикла for...in
вернет все перечислимые свойства, включая свойства с нецелочисленными именами и наследуемые.
Вот почему у нас есть for...of
цикл. Давайте подождем некоторое время. Давайте продолжим цикл for...in
, он перебирает объект и строку. Давайте посмотрим на примере.
Нить
const string = 'Ire Aderinokun';
for (const index in string) {
console.log(string[index])
}
// Result: I, r, e, , A, d, e, r, i, n, o, k, u, n
Объект
const obj = {
a: 1,
b: 2,
c: 3,
d: 4
}
for (const key in obj) {
console.log( obj[key] )
}
// Result: 1, 2, 3, 4
Вот где мы должны использовать цикл for...in
.
Вернуться к… из
Он введен в ES2015 для перебора «повторяемых коллекций». Это объекты, у которых есть свойство [Symbol.iterator]
. Например массивы.
Давайте посмотрим, как это кодировать.
const array = ['a', 'b', 'c', 'd'];
for (const item of array) {
console.log(item)
}
// Result: a, b, c, d
Он работает так же, как цикл for с правильно сопоставленными индексами. Еще одна особенность: он также работает со строкой.
const string = 'Ire Aderinokun';
for (const character of string) {
console.log(character)
}
// Result: I, r, e, , A, d, e, r, i, n, o, k, u, n
Давайте сравним оба.
цикл forEach
Array.prototype.forEach()
, который мы можем вызвать, передав функцию, которая будет выполняться для каждой итерации. В эту функцию будет передан продукт для текущей итерации.
Это полезно в ситуациях, когда мы хотим перебирать целые массивы и выполнять работу в качестве функции обратного вызова, и это улучшает читаемость. Но подождите…
У нас ситуация, я хочу пораньше выйти из петли. Представьте, что у меня есть более длинный список продуктов, и как только я найду тот, который соответствует некоторым критериям, я хочу выполнить какое-то действие. Если бы я использовал forEach()
, он перебирал бы каждый отдельный продукт, что приводило бы к ненужным итерациям, потенциально вызывая проблемы с производительностью в зависимости от длины массива. Так что в этом случае лучше всего подходит цикл for или цикл for..of.
Давайте посмотрим на синтаксис.
arr.forEach(function (item) {
someFn(item);
})
В роуминге я нашел тест для сравнения обоих шлейфов. Здесь ты найдешь. Результаты, достижения.
Это все, ребята. Теперь вы знаете, как выполнять итерацию в javascript.
Надеюсь, тебе понравится, хлопай, поделись.
Было бы очень приятно, если бы вы оставили отзыв об этом.
Спасибо!