如何将Javascript字符串转换为数组?

3

整个列表都作为一个字符串变量提供。

    instruments = '["guitar","bass","drums","keyboard"]';

如何将字符串转换为数组,以便我可以在每个单独的div标签中打印出每个项目?

    for(var i=0;i<instruments.length;i++){
        document.write("<div>"+instruments[i]+"</div>");
        }

有什么可以提供那种格式数据的吗?如果不是用单引号括起来的话,这就是一个有效的 JavaScript 数组语法。 - Jamiec
它确实是一个 JavaScript 数组,只是最初提供的是字符串。 - Henry Yun
@Jamiec:不是的。双引号在字符串内是正确的。JSON 要求使用它们。括起字符串的引号根本不重要。JavaScript 对 "' 的处理完全相同。 - jwueller
@elusive。我知道,我的意思是没有外部引号它就是一个Javascript数组。 - Jamiec
6个回答

4

如果字符串包含一个有效的JSON数组(就像在您的示例中),您可以使用JSON.parse,如下所示:

instrumentsString = '["guitar","bass","drums","keyboard"]';
instrumentsArray = JSON.parse(instrumentsString);

请注意,并非所有浏览器都具有JSON.parse函数,因此您可能需要包含一种实现。例如,jQuery带有一个实现,您还可以使用Douglas Crockford的json2。

在两个JSON.parse函数中,哪一个更好?jQuery还是json2.js? - Henry Yun
这并不完全正确。JSON解析器只会解析有效的JSON字符串,一个字符串可以包含有效的Javascript代码但却不是有效的JSON格式。然而,问题中的字符串也是有效的JSON格式。 - Guffa
好的,我会修改答案。 - Jakob
@eventhandler:我不确定性能是否有差异。甚至可能jQuery使用了Crockford的实现。但是,这并不重要。但是,如果你真的关心,只需要测试它们,看看哪一个表现更好 :) - Jakob
@eventhandler:当然,如果您还没有使用jQuery,只需要JSON相关的内容,请选择json2,因为它恰好可以满足您的需求,而不会有其他多余的东西。 - Jakob

3
在这种情况下,您可以使用JSON解析器
JSON.parse('["guitar","bass","drums","keyboard"]');
// -> ["guitar", "bass", "drums", "keyboard"]

1

假设您有一个名为 instruments 的变量:

使用JSON.parse()如下:

var instrumentsArray = JSON.parse(instruments);

或者,可以像这样做:

instruments = instruments.replace(/\[(.*?)\]/, "$1");
var instrumentsArray = instruments.split(/,/);

然后只需使用一个for循环来遍历数组:
for (var i = 0; i < instrumentsArray.length; i++) {
    // instrumentsArray[i] is the current element
}

0
你可以使用 eval 函数将其转换为数组。
var instruments = '["guitar","bass","drums","keyboard"]';
var instruments_array = eval(instruments);

0

你可以简单地对其进行eval操作

instruments = '["guitar","bass","drums","keyboard"]';
var instrumentsArray = eval(instruments);

那么

for(var i=0;i<instrumentsArray.length;i++){
    document.write("<div>"+instrumentsArray[i]+"</div>");
    }

0
如果字符串列表中有任何分隔符,那么只需使用 split 函数。
例如:
var myString = "zero one two three four";

var mySplitResult = myString.split(" ");

for(i = 0; i < mySplitResult.length; i++){
    document.write("<br /> Element " + i + " = " + mySplitResult[i]); 
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接