Не используйте for...in
для массивов.В этом случае лучше всего использовать традиционный цикл for
.
Причина в том, что for...in
смотрит на массив как на объект, и поэтому такие свойства, как indexOf
или length
могут быть включены впетля.Обычный цикл for
имеет дело только с числовыми ключами, поэтому эту проблему можно избежать.
В примечании стороны нежелательные свойства могут также отображаться при переборе простых объектов (как и других).отметил, что свойства, которые вы добавляете к прототипу объекта, будут отображаться).Вы можете обойти это, написав свои циклы for...in
следующим образом:
var obj = { ... };
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
var item = obj[prop];
...
}
}
Для ясности: вам все же не следует использовать этот метод для массивов.