【问题标题】:How to convert string array response to javascript 2D array?如何将字符串数组响应转换为 javascript 二维数组?
【发布时间】:2012-05-19 18:47:48
【问题描述】:

我正在 JSP 中创建以下字符串响应:

[[[1,2,3,4],[5,6,7,8]],[[9,10,11,12],[13,14,15,16]]]

并在 jQuery 中获得此响应。

但我将它作为一维数组,我只需要数组是这样的

我得到了回应

var a = "[[[1,2,3,4],[5,6,7,8]],[[9,10,11,12],[13,14,15,16]]]";

【问题讨论】:

  • 这很可能是 JSON 数据,因此请考虑使用 json 库,或者,作为最坏的+最后的努力,eval() it。
  • Javascript 没有 2D 数组...不过,您可以拥有数组数组,这正是您在示例中得到的内容
  • var set = eval(a) => 然后您可以使用 set[0][0] 来获取您的第一个数据数组 set[0][0][2] == 3跨度>
  • 是的,eval 运行良好,我们可以说它可以在 IE 和其他浏览器上运行吗?

标签: javascript jquery servlets


【解决方案1】:

两种可能的方法:

  1. var arr = JSON.parse(a);
  2. var arr = eval(a);

【讨论】:

  • 但是,如果字符串不是由您的脚本本身生成的,则不建议使用eval。 (不过我为你的答案 +1)
  • @Derek:是也不是。前端的eval 比后端的eval 麻烦很多;但是你必须小心,因为它是一个 XSS 入口点。只要您的变量 (a) 是从受信任的来源填充的,您的用户就不必担心。 eval 的另一个缺点是固有的性能损失,因为浏览器必须重新解释代码。
【解决方案2】:

要根据字符串表示创建任意嵌套数组(或 JSON 支持的任何对象),您可以使用 JSON.parse 方法。

var arr = JSON.parse("[[[1,2,3,4],[5,6,7,8]],[[9,10,11,12],[13,14,15,16]]]");

【讨论】:

  • 我需要任何库来让它工作吗,它支持 IE 吗?
  • @user629804 它可以在 IE8+ 中运行,您可以使用 json2 library 添加对旧浏览器的支持。
  • 谢谢,彼得,我将采用 eval 方法,因为它似乎 IE 安全
  • @user629804 - 你可以使用 jQuery。那里包括 JSON 转换。
  • 是的 - 如果浏览器中不存在 JSON2,则 jQuery 将 JSON2 作为填充程序包含在内。此外,eval 永远不会被认为是安全的。这有点像在托儿所的衣架上放了一把带安全装置的枪。如果您采取预防措施,它可能是安全的,但如果你玩够了,就会有人被踢一脚。
【解决方案3】:

您将获得 JSON,它是一个字符串。您需要将其解析为 JavaScript 对象。

var object_a = JSON.parse(a);

【讨论】:

    【解决方案4】:

    试试这个:

    var data = JSON.parse(arr):
    

    【讨论】:

      【解决方案5】:

      使用JSON.parse:

      var matrix = JSON.parse(a):
      

      对于 IE8 以下的支持,请使用 jQuery。 (如果您的网站已经在使用 jQuery,那就幸运了!;)

      【讨论】:

        猜你喜欢
        • 2021-01-28
        • 2019-01-23
        • 2018-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多