![](/img/trans.png)
[英]Convert string "[1,2,3]" to array [1,2,3] in JavaScript
[英]Convert string array "[1,2,3]" to array of number in Javascript
我一直在尋找解決方案,但我只找到了從["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
是邪惡的! 它允許執行任意代碼。
Function
構造函數也是如此,但對於那些構造函數,您可以向其添加'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]
。
使用JSON.parse("[1,2,3]");
一種解決方案是使用JSON.parse()
JSON.parse("[1,2,3]")
如果來源是可信的,您也可以使用eval() ( 不要不必要地使用 eval! ),例如
eval("[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 || []) -> []
您可以使用eval
有以下告誡不要使用eval
不必要!
var myArray = eval("[1,2,3]");
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.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.