变量字符串显示为未定义,新字符串不出现在数组,javascript中

时间:2014-02-03 21:29:42

标签: javascript arrays string iteration

我正在尝试编写一些代码,将一串电子邮件放入一组电子邮件中。在任何有逗号(,)的地方拆分字符串。我遇到的最初问题是因为变量未被识别而传递的字符串。我收到for循环的条件部分的错误消息“无法读取未定义的属性'长度'。奇怪,因为我肯定传递一个字符串或试图?

当我直接将字符串传递给函数参数时(为了避免上述问题来测试函数的其余部分),只显示前2个电子邮件地址,最终的电子邮件地址丢失了?

我正在学习编程,这是一个练习,我试图避免使用split()方法或regEx。我知道Daft。

对克服这两个问题的任何帮助都非常感激。

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 = "john@google.com, jake@yahoo.com, andrew@hotmail.com"; 

2 个答案:

答案 0 :(得分:0)

var str = "john@google.com, jake@yahoo.com, andrew@hotmail.com"; 

separateCommaValues(str);

这是正确的顺序。您的变量可以在通过提升使用之前声明,但在使用之前无法定义它(未定义的错误)。

答案 1 :(得分:0)

最后一个电子邮件地址没有被推送到数组中,因为它之后没有逗号。所以在循环之后,在document.write( input );之前,添加如下内容:

if(val.length > 0){
  input.push(val);
  val = '';
}