无法将字符串加载到javascript数组中
Canot load string into javascript array
我正在尝试使用谷歌图表加载一个数据数组。我的字符串输入是
var data = "[['Time', 'TasksRunning'],[1.9520154, 0]]";
var tableData = google.visualization.arrayToDataTable(data);
我收到信息
0x800a139e - JavaScript runtime error: Not an array
我的数据出了什么问题?
它是一个字符串,而不是数组。注意引号。
如果去掉引号,就会得到一个数组。
假设字符串是JSON格式的(使用ALWAYS双引号而不是单引号),您可以只使用JSON.parse
:
var string='["Hello",["one","two"],3]';
var array=JSON.parse(string);
这将创建一个具有树元素的数组:一个字符串、另一个数组和一个数字
专业提示:编码时始终使用单引号字符,因此在创建JSON字符串或具有属性的HTML/XML标记时不必转义双引号字符。
数据变量的值用引号括起来,这使它成为一个字符串。去掉这些,只在逗号分隔的值周围加上[],使其成为一个数组。
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"]
我不建议这样做,但如果文件的来源是可信的,则可以使用eval()
将字符串转换为数组。
var data = eval("[['Time', 'TasksRunning'],[1.9520154, 0]]");
var tableData = google.visualization.arrayToDataTable(data);
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 将Javascript数组发送到控制器ASP.NET MVC
- JavaScript数组包含一个值
- 将JavaScript数组传递给函数
- javascript:数组循环
- 将数据存储在javascript数组中以供进一步使用
- 在Javascript数组中查找绝对最大值
- JavaScript数组优化以提高性能
- 在javascript数组中分散数字
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript数组动态
- javascript数组元素是否知道其封闭数组
- 将 JSON 数组解析为 JavaScript 数组
- 将Transform和Instance Variable转换为对象的JavaScript数组
- 使用Web Html表单创建Javascript数组
- 从重复的javascript数组结果集中只获取一行
- 如何为Javascript数组()的使用准备PHP变量
- Javascript数组和函数
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)