Ошибка в цикле
Товарищи javascript'еры, помогите новичку, пожалуйста.
var elemNumber; var numberStr; var subs = 'Ель2Сосна'; if (typeof subs.substring(0,1)*1 == 'number') { firstNumber = subs.substring(0,1)*1; } var table = { 'Ель': 13, 'Сосна': 2223, 'Береза': 122, 'Дуб': 2687 } var arr = subs.match(/[А-ЯЁA-Z][а-яёa-z]+/g), i = arr.length; alert (arr[0]); alert (subs.substring(subs.indexOf(arr[0]) + arr[0].length, subs.indexOf(arr[0]) + arr[0].length+1)); // проверка на работоспособность for (i=0; i < arr.length + 1; i++) { if (typeof subs.substring((subs.indexOf(arr[i]) + arr[i].length, subs.indexOf(arr[i]) + arr[i].length+1)*1) == 'number') { table[arr[i]] = table[arr[i]]*subs.substring((subs.indexOf(arr[i]) + arr[i].length - 1, subs.indexOf(arr[i]) + arr[i].length)*1); } } alert (table[arr[i]]); alert (table[arr[0]]); Программа должна распознавать элементы массива в строке, введенной пользователем, после чего изменять значения элементов массива (цифры), умножая, если есть число после введенного элемента массива, на это число. К примеру, есть в массиве 'Береза': 122 и т.д. Пользователь ввел строку "Береза2ДубСосна" Значение 'Буреза' должно измениться с 122 на 244, значения Дуба и сосны должны остаться старыми. Я написал цикл, который должен это реализовывать (поиск и перезапись значений), но он не работает. Сам алгоритм мой нахождения цифры рабочий, проверка алертом есть, но цикл работать отказывается. Может, кто-нибудь заметит ошибку? |
отслеживайте каждое значение алертом в цикле или выводом в консоль .
да и читаемый код научитесь писать Цитата:
а ещё в браузерах , есть инструменты разработчика и модули подобные фаирбагу если что Функция этого чудо кода? Цитата:
Цитата:
|
Цитата:
А второго, ну, сделать столько раз, сколько элементов в массиве. |
dmitriymar, я постараюсь научиться писать понятно, спасибо за совет.
а это if (typeof subs.substring((subs.indexOf(arr[i]) + arr[i].length, subs.indexOf(arr[i]) + arr[i].length+1)*1) == 'number') { table[arr[i]] = table[arr[i]]*subs.substring((subs.indexOf(arr[i]) + arr[i].length - 1, subs.indexOf(arr[i]) + arr[i].length)*1); проверяет, если следующий символ за подстрокой, умноженный на 1, является числом, то значение меняем на значение элемента * на этот номер |
Придирается вот к чему:
typeof subs.substring((subs.indexOf(arr[n]) + arr[n].length, subs.indexOf(arr[n]) + arr[n].length+1)*1 == 'number' Uncaught TypeError: Cannot read property 'length' of undefined Не хочет работать так в цикле, а если протестировать просто с нуликом или единичкой - работает. никто не знает, в чем может быть дело? |
Часовой пояс GMT +3, время: 00:51. |