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