【问题标题】:variable string appearing as undefined, new string not appearing in array, javascript变量字符串显示为未定义,新字符串未出现在数组中,javascript
【发布时间】:2014-02-27 13:52:11
【问题描述】:

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

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

我正在学习编程,这是一个练习,因此我试图避免使用split() 方法或正则表达式。傻我知道。

非常感谢您在克服这两个问题方面的任何帮助。

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"; 

【问题讨论】:

  • 您应该在使用它之前定义变量。将调用前的var str = "..."; 行移至separateCommaValues(str);
  • str不应该在使用前初始化吗?
  • 如果这不是学术练习,我建议使用 String.split:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 我注意到的第一件事是,在将文本推送到数组之前,您的函数似乎需要一个逗号。由于第三个邮箱地址后面没有逗号,所以不会被推送。
  • 将字符串更改为数组的方法很长。

标签: javascript arrays string iteration


【解决方案1】:
var str = "john@google.com, jake@yahoo.com, andrew@hotmail.com"; 

separateCommaValues(str);

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 2016-02-07
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多