Я пишу на JavaScript и обнаружил это странное поведение, которое я не могу объяснить.для индекса цикла, который преобразуется в строку без причины
for (i in bubbles){
bubbles[i].string = "some stuff!" // <- no errors here
results[0] = i - 1
results[1] = i + 1
results[2] = parseInt(i) + 1
}
когда i = 1
это происходит
results[0] -> 0
results[1] -> 11
results[2] -> 2
это вообще возможно ?! Возможно, это связано с другими ошибками в коде. Я попытался выделить случай выше, но, если вам это нужно, вот весь код
for (i in bubbles){
if (bubbles[i].check()){
// define which boubble has been clicked and start dragging
bubbleDrag[2] = bubbles[i].check();
bubbleDrag[1] = i;
bubbleDrag[0] = true;
// define where to check to avoid overlapping dates
if (i != 0 && i < bubbles.length - 1){
bubbleDrag[3] = i - 1;
bubbleDrag[4] = i + 1;
} else if (i == 0 && bubbles.lenght > 1){
bubbleDrag[3] = i + 1;
} else if (i == bubbles.lenght - 1){
bubbleDrag[3] = i - 1;
}
}
}
Что такое 'пузыри'? Цикл 'for -in' в JavaScript предназначен для итерации над _objects_' {} ', а не над _arrays_' [] '. Переменная iterator всегда будет строкой. –
В цикле 'for ... in' переменная цикла всегда является строкой, потому что вы выполняете итерацию поверх * свойств объекта *. Если вы выполняете итерацию по массиву, используйте обычный цикл 'for'. См. Https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/for...in#Description и http://stackoverflow.com/q/2265167/218196. –
bubbles - массив объектов ... – Saturnix