我正在尝试将通过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
[...]
预期结果
答案 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);