javascript-如何将字符串拆分为对象数组

时间:2019-05-20 10:33:15

标签: javascript

我正在尝试将通过AJAX发送的字符串拆分为Array,以用于Google图表中。

    var arr = dataChart.split('|@|');

    arr = Object.values(arr);
    console.log(arr);
    data.addRows([
        arr
    ]);

我的字符串(dataChart)是这样的:

['First level', null, 0]|@|['Inside first level', 'First level', 1000]|@| ['Second level', null, 0]|@|['Inside second level', 'Second level', 1000]

我希望输出为:

  

对象0:一级,null,0

     

对象1:在第一级内部,第一级,1000

     

[...]

预期结果

Expected result

2 个答案:

答案 0 :(得分:0)

我能想到的最佳解决方案是尝试以下操作:

JSON.parse(`[${variable name that contains the string}]`)

如果字符串实际上包含字符串的撇号(')而不是双引号("),则可能会引起问题。

要解决此问题,您可以用正则表达式替换,用双引号字符串替换所有单引号字符串:

str.replace(/\['/g, "[\"")
   .replace(/',/g, "\",")
   .replace(/, ?'/g, ",\"")
   .replace(/'\]/g, "\"]")

或者,您可以只使用str.replace(/'/g, "\""),但这也将替换字符串本身中的所有撇号,例如'Jake's car'将变成"Jake"s car"

答案 1 :(得分:0)

您可以映射拆分的数组并使用eval

var dataChar = "['First level', null, 0]|@|['Inside first level', 'First level', 1000]|@| ['Second level', null, 0]|@|['Inside second level', 'Second level', 1000]";
     var arr = dataChar.split('|@|').map(function(row){return eval(row);});
     arr = Object.values(arr);
     console.log(arr);