我有以下javascript:
var emails_array = ["[\"theiremail1\",\"theiremail2\",\"theiremail3\"]"];
var emails_array_length = emails_array.length;
alert("emails array: " + emails_array + "emails array length: " + emails_array_length);
此代码显示的警告是:
emails array: ["theiremail1","theiremail2","theiremail3"]emails array length: 1
为什么不回归3?
答案 0 :(得分:1)
这是一个只有一个项目的数组:
var emails_array = [
"[\"theiremail1\",\"theiremail2\",\"theiremail3\"]"
];
您之后可能会发生什么:
var emails_array = JSON.parse(["[\"theiremail1\",\"theiremail2\",\"theiremail3\"]"]);
答案 1 :(得分:0)
我认为是因为转义字符和您的初始双引号""
。我已经测试了几次,每次我使用var emails_array = ["[\"theiremail1\",\"theiremail2\",\"theiremail3\"]"];
的语法时,由于初始引号,长度为1。
也许一个更简单的字符串可以工作?
可以肯定的是,var emails_array = ['theiremail1', 'theiremail2', 'theiremail3'];
会提供emails_array.length
3 ...
无论如何,这在我的测试环境中给了.length
3
。如果你必须使用原来的双包围,因为你实际上想要一个带括号的字符串,那么以下内容适用于我。
emails_array = ['[theiremail1', 'theiremail2', 'theiremail3]'];
如果那就是你想要的,那么位置0会有[
而位置2会有]
。
您目前拥有阵列设置的方式实际上只有1长,因为您的第一个双引号""
告诉编译器将所有内容都视为一个大字符串,并且它无法看到您的分隔符,
字符