Canot将字符串加载到javascript数组中

时间:2016-04-14 15:29:25

标签: javascript html angularjs

我正在尝试使用谷歌图表来加载数据数组。我的字符串输入是

var data = "[['Time', 'TasksRunning'],[1.9520154, 0]]";
var tableData = google.visualization.arrayToDataTable(data);

我收到了消息

0x800a139e - JavaScript runtime error: Not an array

我的数据有什么问题?

4 个答案:

答案 0 :(得分:0)

这是一个字符串,而不是一个数组。注意引号。

如果删除引号,则会有一个数组。

答案 1 :(得分:0)

您的数据变量的值是引号,这使它成为一个字符串。删除它们,并在逗号分隔值周围加上[]使其成为一个数组。

var data = [['Time', 'TasksRunning'],[1.9520154, 0]];

编辑: 由于您是从文本文件中读取的,因此您需要进行一些操作以从字符串中创建数组。也许类似于以下内容:

//Original data
var data = "[['Time', 'TasksRunning'],[1.9520154, 0]]";
//Exclude the outer brackets
var parsed = data.substr(1,data.length-2);
//Split into separate parts
var parts = updatedData.split('],[');
//Recreate the new array
var arr = [];
for(var a = 0; a < parts.length; a++) {
  //Remove the brackets from the parts
  var val = parts.replace(/[\[\]]/g,'');
  arr.push(val);
}
//Yields: ["'Time', 'TasksRunning'", "1.9520154, 0"]

答案 2 :(得分:0)

假设字符串是JSON格式的(使用ALWAYS双引号而不是单引号),您可以使用JSON.parse

var string='["Hello",["one","two"],3]';
var array=JSON.parse(string);

这将创建一个包含树元素的数组:一个字符串,另一个数组和一个数字

Pro-tip:编码时始终使用单引号字符,因此在创建带有属性的JSON字符串或HTML / XML标记时,您不必转义双引号字符。

答案 3 :(得分:0)

我讨厌建议它,但如果文件的来源是可信的,你可以使用eval()将字符串转换为数组。

var data = eval("[['Time', 'TasksRunning'],[1.9520154, 0]]");
var tableData = google.visualization.arrayToDataTable(data);