2014-02-03 4 views
-2

Я пытаюсь написать код, который помещает одну строку писем в массив писем. Разбиение строки везде, где есть запятая (,). Первоначальная проблема, с которой я столкнулся, - это строка, которая передается как переменная, не распознается. Я получаю сообщение об ошибке «Can not read property» length «undefined» условной части цикла for. Странно, поскольку я определенно передаю строку или пытаюсь?переменная строка, отображаемая как неопределенная, новая строка, не отображаемая в массиве, javascript

Когда я передаю строку непосредственно параметру функции (чтобы избежать вышеупомянутой проблемы для проверки остальной функции), только первые два адреса электронной почты будут удалены, последний адрес электронной почты будет потерян?

Я изучаю программирование, и это упражнение как таковое Я пытаюсь избежать использования метода split() или regEx. Daft я знаю.

Любая помощь в преодолении этих 2 проблем очень ценится.

function separateCommaValues(text) 
{ 

    var input = []; 
    var val = ''; 

    for(var i = 0; i < text.length; i++)  { 
     if(text[i] == ',') { 
      if(val.length == 0){ 
       continue; 
      } 
       input.push(val); 
       val = ''; 

     } else { 
       val += text[i]; 
     } 
    } 
    document.write(input); 
} 

separateCommaValues(str); 

var str = "[email protected], [email protected], [email protected]"; 
+1

Вы должны определить переменную перед ее использованием. Переместите строку 'var str =" ... ";' перед вызовом 'separateCommaValues ​​(str);' – tleilax

+0

не следует инициализировать str до его использования? – Shanimal

+1

Если это не академическое упражнение, я рекомендую использовать String.split: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split – acbabis

ответ

0
var str = "[email protected], [email protected], [email protected]"; 

separateCommaValues(str); 

Это правильный порядок. Ваша переменная может быть объявлена ​​до ее использования с помощью подъема, но вы не можете определить ее до ее использования (неопределенная ошибка).

0

И последний адрес электронной почты не помещается в массив, потому что после него нет запятой. Итак, после цикла, перед document.write(input);, добавьте что-то вроде этого:

if(val.length > 0){ 
    input.push(val); 
    val = ''; 
} 
Смежные вопросы