将看起来像数组的字符串转换为实际数组

时间:2016-03-21 01:34:15

标签: javascript

如果我有str = "[[1,Warriors,NBA],[2,Kings,NBA],[3,Knicks,NBA]]"怎样才能将其变成JavaScript中的数组?

一个数组,其中数组的每个元素本身就是一个数组。

可能的?

4 个答案:

答案 0 :(得分:2)

你可以尝试我为二维数组放在一起的基本功能:



function customParse(data){
    arr = []
    for(var i = 0; i < str.length; i++){
      if(str[i] == ','){
        if(!isNaN(str[i-1])){
          arr.push(',')
          arr.push('"')
        }else{
          if(str[i-1] != "]"){
            arr.push('"')
            arr.push(',')
            arr.push('"')
          }else{
            arr.push(',')
          }
        }
      }else{
        if(str[i] == ']' && str[i-1] != ']'){
          arr.push('"')
        }
        arr.push(str[i])
      }
    }
    return JSON.parse(arr.join(""))
}

str = "[[1,Warriors,NBA],[2,Kings,NBA],[3,Knicks,NBA]]"
result = customParse(str)
alert("Raw: "+result);
alert("Stringified: "+JSON.stringify(result));
&#13;
&#13;
&#13;

答案 1 :(得分:2)

有点脏,但会做的伎俩。 &#34;匹配&#34;变量将包含您的数组数组。

var str = "[[1,Warriors,NBA],[2,Kings,NBA],[3,Knicks,NBA]]";
var cleanStr = str.substring(1,str.length-1)

var matches = [];

var pattern = /\[(.*?)\]/g;
var match;

while ((match = pattern.exec(cleanStr)) != null)
{
  matches.push(match[1].split(","));
}

此外,如果您有选项,只需在javascript中定义数组。

var list = [[1,'Warriors','NBA'],['2','Kings','NBA'],[3,'Knicks','NBA']];

答案 2 :(得分:0)

有一些用javascript编写的javascript解析器。请参阅:JavaScript parser in JavaScript,此:https://github.com/mishoo/UglifyJS,此:http://esprima.org/,此:http://marijnhaverbeke.nl/acorn/

答案 3 :(得分:0)

var array = JSON.parse("[" + str + "]");

或者你可以使用.split(),这也会得到一个字符串数组。