Преимущества цикла for…in для работы с массивами:
- Эффективен для перебора разреженных массивов. 2 Если на каждой циклической итерации осуществляются проверки, то такой способ может быть эффективнее обычного цикла for, так как перебираются лишь элементы, которые определены в массиве явно. 2
Недостатки цикла for…in для работы с массивами:
- Перебираются не только индексы, но и другие свойства. 1 Если вместо массива окажется массивоподобный объект, то может попасться свойство length. 1
- Отсутствующие индексы пропускаются. 1 Если элемент массива удалялся через delete, либо добавление в массив происходило по индексу после его конца, то отсутствующие индексы будут пропущены. 1
- Порядок итерации не гарантируется. 34 Нет гарантии, что for…in будет возвращать индексы в нужном порядке. 14
Для работы с массивами, где важен порядок индексов, лучше использовать циклы for, Array.prototype.forEach() или for…of. 14