将字符串数组“[1,2,3]”转换为Javascript中的数字数组

时间:2015-06-09 10:00:40

标签: javascript arrays

我一直在寻找解决方案,但我只找到了从["1","2","3"][1,2,3]的转换,但我的问题是如何将其转换为"[1,2,3]"[1,2,3]

对你们中的许多人来说可能都很清楚,但对我来说并非如此。

6 个答案:

答案 0 :(得分:7)

有几种方法:

  • 使用已经提及的:eval("[1,2,3]")
  • 使用已经提及的:JSON.parse("[1,2,3]")
    您可以访问https://github.com/koldev/JsonParser并获取不具备此方法的浏览器的官方实施,例如IE7。
  • 使用jQuery的JSON解释器:$.parseJSON("[1,2,3]")
  • 使用函数构造函数:Function("return [1,2,3];")()
  • 使用任何构造函数:[]["filter"]["constructor"]("return [1,2,3]")()(感谢JSF*ck

最安全的选择是使用jQuery包,来自jQuery或浏览器的原生包。

请记住eval是邪恶的!它允许执行任意代码 对于Function构造函数也是如此,但是对于那些构造函数,您可以向其添加'return' 如果您执行eval("[1,2,3]; evil();")evil()功能将执行,而Function("return [1,2,3]; evil();")将阻止执行evil()这不是完美的解决方案,因为仍然可以执行Function("return evil() || [1,2,3];"),并且evil()将被执行。但是,在这种情况下,[1,2,3]仅在evil()返回假值(""null0false时才会返回。 ..)。

答案 1 :(得分:3)

一种解决方案是使用JSON.parse()

cv::Mat ReadImageToCVMat(const string& filename,
const int height, const int width, const bool is_color) {
 cv::Mat cv_img;
 int cv_read_flag = (is_color ? CV_LOAD_IMAGE_COLOR :
CV_LOAD_IMAGE_GRAYSCALE);
 cv::Mat cv_img_origin = cv::imread(filename, cv_read_flag);
 if (!cv_img_origin.data) {
LOG(ERROR) << "Could not open or find file " << filename;
return cv_img_origin;
 }
if (height > 0 && width > 0) {
cv::resize(cv_img_origin, cv_img, cv::Size(width, height));
} else {
cv_img = cv_img_origin;
}
return cv_img;
}

如果来源是受信任的来源(eval()),您也可以使用Don't use eval needlessly!

JSON.parse("[1,2,3]")

答案 2 :(得分:3)

使用JSON.parse("[1,2,3]");

工作示例http://jsfiddle.net/bcguevd2/

答案 3 :(得分: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 || [])         -> []

答案 4 :(得分:0)

您可以eval 使用以下警告 Don't use eval needlessly!

var myArray = eval("[1,2,3]");

答案 5 :(得分:0)

    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.