【问题标题】:Convert string to a multidimensional array将字符串转换为多维数组
【发布时间】:2012-11-17 18:37:59
【问题描述】:

我有一个字符串

 var myString = "['Item', 'Count'],['iPad',2],['Android',1]";

我需要将它转换成一个数组,其中:

myArray[0][0] = 'Item';
myArray[0][1] = 'Count';
myArray[1][0] = 'iPad';
myArray[1][1] = 2;

等等……

字符串的长度可能不同,但始终采用上述格式。我尝试过拆分和拼接以及我能想到的任何其他“ing”,但我无法得到它。

有人可以帮忙吗?

【问题讨论】:

    标签: javascript multidimensional-array


    【解决方案1】:

    如果字符串肯定是安全的,最简单的方法是将[] 连接到开头和结尾,然后连接eval

    var arr = eval("[" + myString + "]");
    

    如果您想要更高的安全性,请为您的字符串使用双引号,并以相同的方式使用JSON.parse()

    var myString = '["Item", "Count"],["iPad",2],["Android",1]';
    
    var arr = JSON.parse("[" + myString + "]");
    

    这将限制您使用受支持的 JSON 数据类型,但鉴于您的示例字符串,它会正常工作。

    【讨论】:

    • @RoyiNamir:这已经在我的回答中注明,但我添加了修改后的字符串以便清楚。
    • 太棒了!我一直在寻找类似的东西!谢谢!
    • 哇!非常感谢 eval 函数
    • 需要在末尾加上;eval("[" + myString + "];");
    • eval 很危险,您不应该在用户可以以任何方式与之交互的任何内容上使用它!
    【解决方案2】:

    像这样写你的代码

    var myString = "[['Item', 'Count'],['iPad',2],['Android',1]]";
    

    只是

     var arr = eval(myString);
    

    【讨论】:

      【解决方案3】:

      试试这个:

      JSON.parse("[['Item', 'Count'],['iPad',2],['Android',1]]".replace(/\'/g,"\""))
      

      【讨论】:

        【解决方案4】:

        我尝试使用 eval,但在我的情况下它不起作用...我需要将字符串转换为对象数组。这是我的字符串(一个ajax请求结果):

        {'printjob':{'bill_id':7998,'product_ids':[23703,23704,23705]}}
        

        当我尝试时:

        x = "{'printjob':{'bill_id':7998,'product_ids':[23703,23704,23705]}}";
        eval(x);
        

        我收到“意外令牌:”错误。

        我的解决方案是:

        x = "{'printjob':{'bill_id':7998,'product_ids':[23703,23704,23705]}}"; 
        x = "temp = " + x + "; return temp;"
        tempFunction = new Function (x);
        finalArray = tempFunction();
        

        现在有了对象 finalArray!

        希望能帮到你

        【讨论】:

        • new Function(string) 和 eval 一样危险,请确保用户不能更改 Object` 中的任何属性。
        猜你喜欢
        • 1970-01-01
        • 2019-02-13
        相关资源
        最近更新 更多