代码之家  ›  专栏  ›  技术社区  ›  Sam

从数组格式的字符串创建javascript数组

  •  0
  • Sam  · 技术社区  · 8 年前

    我正在从CMS中获取一个字符串(具有数组标记),但JavaScript无法将其识别为数组。

    // Example of how data comes from CMS
    var data = [ ["<div class='example'><h2>University</h2><hr><p>Lorem Ipsum</p></div>", 13.3851, -2.2568, "/example.png"],       
    ["<div class='example2'><h2>University Two</h2><hr><p>Lorem Ipsum Example</p></div>", -3.3851, -22.2568, "/examplenow.png"], ] ;
    
    // where I need data as array
    googlelocations = data;
    

    当我记录数据时,我得到:

    0: "[\"<div class='example'><h2>University</h2><hr><p>Lorem Ipsum</p></div>\", -3.3851, -22.2568, \"/example.png\"],\r\n[\"<div class='example2'><h2>University Two</h2><hr><p>Lorem Ipsum Example</p></div>\", -3.3851, -22.2568, \"/examplenow.png\"],"
    

    艾斯 长度:1 如何将var数据作为上述信息的数组?

    2 回复  |  直到 8 年前
        1
  •  0
  •   Steve    8 年前

    假设你得到

    ["<div class='example'><h2>University</h2><hr><p>Lorem Ipsum</p></div>", 13.3851, -2.2568, "/example.png"],       
    ["<div class='example2'><h2>University Two</h2><hr><p>Lorem Ipsum Example</p></div>", -3.3851, -22.2568, "/examplenow.png"],
    

    在CMS中,类似于@data。

    您需要将这些数组包装成一个数组,以便将它们正确地分配到 data 变量。

    var data = [ @DATA ];

        2
  •  0
  •   Emeeus    8 年前

    要分析该响应,这似乎是一个数组,可以使用 JSON.parse() 在这种情况下,您需要构建一个有效的数组或JS对象。在这种情况下,添加 [ ] 解决了这个问题,但这取决于具体的响应方式。

    var data = "[\"<div class='example'><h2>University</h2><hr><p>Lorem Ipsum</p></div>\", -3.3851, -22.2568, \"/example.png\"],\r\n[\"<div class='example2'><h2>University Two</h2><hr><p>Lorem Ipsum Example</p></div>\", -3.3851, -22.2568, \"/examplenow.png\"]"
    
    data = JSON.parse("["+data+"]")
    
    console.log(data)

    如果只需要值,可以这样做,比如:

    var data = "[\"<div class='example'><h2>University</h2><hr><p>Lorem Ipsum</p></div>\", -3.3851, -22.2568, \"/example.png\"],\r\n[\"<div class='example2'><h2>University Two</h2><hr><p>Lorem Ipsum Example</p></div>\", -3.3851, -22.2568, \"/examplenow.png\"]"
    
    data = data.split(",")
    
    var latLong = [data[1],data[2],data[5],data[6]] 
    
    console.log(latLong)