A = [1,2,3,4,5];
for (var i in A) {
if (A[i] == 4) A.splice(i,1), A.push(7);
if (A[i] == 2) A.splice(i,1), A.push(0);
if (A[i] == 7) console.log('seven');
if (A[i] == 0) console.log('zero');
}
console.log(A);
Это похоже на работу, но я не знаю деталей реализации цикла for (.. in ..), чтобы убедиться, что он безопасен в большинстве условий.Безопасно ли изменять контур Array in for (..in ..)?
See also the paired question about an object modification
Непростая итерация массивов с использованием 'for..in'. – Teemu
[ECMA 262 - заявление 'for-in'] (http://www.ecma-international.org/ecma-262/5.1/#sec-12.6.4). Свойства извлекаются по одному, после завершения предыдущей итерации. Итак, если вы спрашиваете, возможно ли изменить объект, чтобы цикл продолжался бесконечно, да, это возможно. –
* Возможно ли? * Да. * Это безопасно? * Да. * Это хорошая практика? * Нет, потому что легко потеряться с индексом, о котором вы говорите. –