| JavaScript: циклы for .. in и for .. of для итерации по массиву |
|
| Добавил(а) microsin | |||||||||||||||||||||
|
В этой статье приведен краткий обзор вариантов организации циклов по элементам массива на языке JavaScript. [for...of — правильный выбор для массивов] Этот цикл перебирает значения элементов. Работает с любыми итерируемыми объектами (массивы, строки, Map, Set, `arguments`, генераторы). const fruits = ['яблоко', 'банан', 'вишня']; Доступ к индексу через entries() for (const [index, value] of fruits.entries()) { Операторы break, continue, return работают как обычно: for (const fruit of fruits) { [for...in — для массивов не рекомендуется] Перебирает ключи (индексы в виде строк) и все перечисляемые свойства, включая унаследованные. const arr = ['a', 'b', 'c']; Почему это опасно: const arr = ['a', 'b', 'c']; arr.customProp = 'проблема'; // добавили свойство Также порядок не гарантирован для нечисловых ключей, и это медленнее для массивов. Сравнение for...of и for...in:
Когда что использовать: for...of — для массивов, строк, Map, Set, NodeList и любых итерируемых: for (const ch of 'привет') console.log(ch); // по символам for...in — только для перебора свойств обычных объектов: const user = { name: 'Иван', age: 30 }; [Альтернативы для массивов] // Классический for — когда нужен индекс и максимальная производительность Итог: для массивов используйте for...of (или forEach/классический for), а for...in оставьте для объектов. |