for не присваивает значение
Здравствуйте!
Столкнулся с такой загадкой: есть элемент cmIndex[0][0], в котором значение 'RUB'. пишу: console.log(cmIndex[0][0]); //Вывод, как надо 'RUB' пишу в цикле:
var input={};
input.num=0;
for(var i=0;cmInputType!=cmIndex[i][0];i++){input.num++;}
//Ошибка: Uncaught TypeError: Cannot read property '0' of undefined
Ругается на [0]. То есть: (var i=0;cmInputType!=cmIndex[i];i++) //Нет ошибки (var i=0;cmInputType!=cmIndex[i][0];i++) //Есть ошибка Приходится переписывать цикл так:
for(var i=0;cmIndex[i];i++){
if (cmInputType!=cmIndex[i][0]){input.num++;}else{break;}
Так длиннее и вложенность добавляется. Хочу, чтобы все красиво было. Почему в цикле for не получается присвоить элементу значение из подмассива? Как с этим бороться? |
у вас не у всех cmIndex[i] есть [0]
|
<script>
function errorFunc () {
!=[0]; // тут сокращенно твоя ошибка
alert ("test");
}
</script>
<input type="button" onclick="errorFunc ();" value="алерт test не появится так как в скрипте ошибка">
</script>
Осталось узнать почему так =). |
у вас не у всех cmIndex есть [i] а когда нет массива с индексом i тогда и вываливается ошибка, так как у undefined нет свойства [0]
|
for(var i = 0; cmIndex[i] && cmInputType != cmIndex[i][0]; i++) {input.num++;}
|
Цитата:
У меня такое чувство, что такой синтаксис просто неприемлем для for. Как будто он отделяет cmIndex[i] от [0] и не понимает, к чему этот 0 вообще относится... Конечно может я не прав... даже хотелось бы в это верить) Или быть может беда происходит на 31-ом индексе? Такого элемента действительно уже нет, но я и написал cmInputType!=cmIndex[i][0] исходя из соображений, что на 31-ом индексе наткнусь на несуществующий элемент, получу false и цикл остановится. Может он тут вместо false мне ошибку выписывает? |
а что по твоему содержит 31й элемент массива?
|
Цитата:
|
| Часовой пояс GMT +3, время: 15:07. |