我一直在寻找解决方案,但我只发现了从["1","2","3"]
转换为[1,2,3]
,但我的问题是如何将这个字符串:"[1,2,3]"
转换成 [1,2,3]
。
对于许多人来说可能很清楚,但对我来说不是。
我一直在寻找解决方案,但我只发现了从["1","2","3"]
转换为[1,2,3]
,但我的问题是如何将这个字符串:"[1,2,3]"
转换成 [1,2,3]
。
对于许多人来说可能很清楚,但对我来说不是。
eval("[1,2,3]")
JSON.parse("[1,2,3]")
$. parseJSON("[1,2,3]")
Function(“return [1,2,3];”)()
[] [“filter”] [“constructor”](“return [1,2,3]”)()
(感谢JSF*ck)最安全的选择是使用JSON包,无论是来自jQuery还是您浏览器的原生包。
记住,eval
是有风险的。它允许执行任意代码。
对于函数构造函数也一样,但是对于这些,您可以在其中添加'return'
。
如果您执行eval(“[1,2,3]; evil();”)
,则将执行evil()
函数,而Function(“return [1,2,3]; evil();”)
将防止执行evil()
。
这不是完美的解决方案,因为仍然可以执行Function(“return evil() || [1,2,3];”)
,并且将执行evil()
。但是,在这种情况下,只有在evil()
返回虚值(“”
,null
,0
,false
,...)时才会返回[1,2,3]
。
var s = '[1,2,3]';
var a = s.slice(1, -1).split(',').map(Number);
// .slice(1, -1) -> "1,2,3"
// .split(',') -> ["1", "2", "3"]
// .map(Number) -> [1, 2, 3]
变体:
var a = (s.match(/-?\d+/g) || []).map(Number);
// .match(/-?\d+/g) -> ["1", "2", "3"]
// '[]'.match(/-?\d+/g) -> null
// (null || []) -> []
/\b(-?\d+(?:\.\d+)?)\b/g
。 - Ismael Miguel/\b(-?\d+(?:\.\d*)?)\b/g
пјҢеӣ дёәJavascriptе…Ғи®ёж•°еӯ—еҶҷжҲҗ1.
гҖӮ - Ismael Miguel其中一种解决方案是使用JSON.parse()。
JSON.parse("[1,2,3]")
eval("[1,2,3]")
JSON.parse
在IE7及以下版本中不受支持(为了那些仍然必须支持它的人们祈祷),但有一些替代方案可供使用(尤其是json2.js)。 - MaxArteval
? - Cerbrus Well, "[1,2,3]" is a String object.
You need to deserialize it using JSON.parse().
e.g:
var arr = "[1,2,3]"
JSON.parse(arr)
output will be >> [1,2,3]
Note: browser console don't detect JSON.parse() or JSON.stringify()
You have to do it in your code editor.
你可以使用 eval
,但要注意以下细节 不要不必要地使用 eval
!
var myArray = eval("[1,2,3]");
eval
通常是一种不好的做法。始终警告它。 - MaxArt