在我的代码中,我正在读取一个隐藏的输入值,实际上是一个javascript
数组对象
<input type="hidden" id="id_num" value="{{array_values}}">
但是当我使用jquery
($('#id_num").val()
)将其作为一个数组字符串时,
"['item1','item2','item3']"
所以我无法迭代它。我应该如何转换为javascript
数组对象,以便我可以迭代数组中的项目?
答案 0 :(得分:4)
您可以使用{ error: [Error: must be string], value: { a: 1, b: false }}
但首先需要将所有JSON.parse
替换为'
,因为"
是JSON字符串中无效的分隔符。
'
&#13;
另一种方法:
像这样使用var str = "['item1','item2','item3']";
str = str.replace(/'/g, '"');
var arr = JSON.parse(str);
console.log(arr);
和slice
:
split
&#13;
答案 1 :(得分:1)
您可以使用eval
命令从字符串中获取值;
eval("[0,1,2]")
将返回;
[0,1,2]
更多详情here
虽然应该注意,如果此字符串值来自用户,如果此字符串值仅来自您的逻辑,则可能会注入会导致结构出现问题的代码,而不是使用{{1} }
答案 2 :(得分:0)
var arr = "['item1','item2','item3']";
var res = arr.replace(/'/g, '"')
console.log(JSON.parse(res));
&#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
评估字符串对我来说就像吼一样:
var arr = "['item1','item2','item3']";
function strEval(fn) {
return new Function('return ' + fn)();
}
var res = strEval(arr);
console.log(res);
&#13;