javascript / json .length为长度为3的数组返回1

时间:2014-10-08 16:42:48

标签: javascript arrays json

我有以下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?

2 个答案:

答案 0 :(得分:1)

这是一个只有一个项目的数组:

var emails_array = [
    "[\"theiremail1\",\"theiremail2\",\"theiremail3\"]"
];

您之后可能会发生什么:

var emails_array = JSON.parse(["[\"theiremail1\",\"theiremail2\",\"theiremail3\"]"]);

http://jsfiddle.net/wtLo7h7s/

答案 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长,因为您的第一个双引号""告诉编译器将所有内容都视为一个大字符串,并且它无法看到您的分隔符,字符