将数组字符串转换为数组javascript

时间:2017-04-05 04:37:19

标签: javascript arrays

在我的代码中,我正在读取一个隐藏的输入值,实际上是一个javascript数组对象

<input type="hidden" id="id_num" value="{{array_values}}">

但是当我使用jquery$('#id_num").val())将其作为一个数组字符串时,

"['item1','item2','item3']"

所以我无法迭代它。我应该如何转换为javascript数组对象,以便我可以迭代数组中的项目?

5 个答案:

答案 0 :(得分:4)

您可以使用{ error: [Error: must be string], value: { a: 1, b: false }} 但首先需要将所有JSON.parse替换为',因为"是JSON字符串中无效的分隔符。

&#13;
&#13;
'
&#13;
&#13;
&#13;

另一种方法:

像这样使用var str = "['item1','item2','item3']"; str = str.replace(/'/g, '"'); var arr = JSON.parse(str); console.log(arr);slice

&#13;
&#13;
split
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用eval命令从字符串中获取值;

eval("[0,1,2]")

将返回;

[0,1,2]

更多详情here

虽然应该注意,如果此字符串值来自用户,如果此字符串值仅来自您的逻辑,则可能会注入会导致结构出现问题的代码,而不是使用{{1} }

答案 2 :(得分:0)

&#13;
&#13;
var arr = "['item1','item2','item3']";
var res = arr.replace(/'/g, '"')
console.log(JSON.parse(res));
&#13;
&#13;
&#13;

答案 3 :(得分:0)

解决此问题的可能方法:

首先,substr删除[..]

接下来,删除内部引号,因为我们在string.split

时会获得额外的报价

最后,split,

let mystring = "['item1','item2','item3']";
let arr = mystring.substr(1, mystring.length - 2)
  .replace(/'/g, "")
  .split(",")
console.log(arr)

答案 4 :(得分:0)

new Function评估字符串对我来说就像吼一样:

&#13;
&#13;
var arr = "['item1','item2','item3']";
function strEval(fn) {
  return new Function('return ' + fn)();
}
var res = strEval(arr);
console.log(res);
&#13;
&#13;
&#13;