我怎样才能解析csv数据从一个字符串的JavaScript数组中使用d3图
我想使用字符串的JavaScript数组中的数据产生一个D3图形,显示时间戳记的时间序列(t),接收( rx)和发送(tx)计数器。数组中的每个成员都是一个对应于一行时间的字符串,rx,tx(是的,带有逗号分隔符)。我不想使用基于d3.request的方法。我已经使用服务器端lua代码从服务器读取文件,并使用jslines.push(字符串)将数据放入页面。我怎样才能解析csv数据从一个字符串的JavaScript数组中使用d3图
109 // Show results so far
110 for (i=0; i < jslines.length; i++) {
111 console.log(i + ": " + jslines[i]);
112 }
上面的部分给我的信心数据是我所描述的。现在我只是试图从“行”中取出3个数据值中的每一个,然后重复。我不在乎他们在这一点上仍然是字符串。数字后面。
我的参考资料是:https://github.com/d3/d3-dsv/blob/master/README.md#csvParseRows但我明显误解了所需的工作。
114 var dataArray = d3.csvParseRows(jslines, function(d, i) {
115 return {
116 time: d[0],
117 rx: d[1],
118 tx: d[2]
119 };
120 });
将感谢(种类)的建议和/或使用D3解析的工作示例和d3被本身不是从远程(或本地)文件中提取准备数据。我能找到的大多数例子都是要求d3将文件内容传输到客户端,我相信。
谢谢...艾伦
如果你已经有了字符串,你可以把它分解如下:
var a = "1,2,3"
var b = a.split(",")
console.log(b[1])
具体而言,你的榜样,您可以提取数据是这样的:
var data = jslines.map(function(l) {
data = l.split(",");
return({time: data[0], rx: data[1], tx: data[2]});
})
然后根据得到的对象数组构造你的d3图。
谢谢埃里克。我遵循你的例子,除了我把函数内的变量“data”改为“tempdata”(在两个缩进行上),以保证函数内的数据(现在是tempdata)与外部数据不同。没有必要,但有助于我的理解。谢谢! –
请分享'jslines'数组(不是全部,只是一些元素就够了)。请记住,'d3.csvParseRows'将解析一个字符串,而不是一个数组。另外,请详细解释*什么*在代码中不起作用......你是否按照你想要的方式获得了'dataArray'?或者这里的问题是如何使用'dataArray'? –
jslines数组的每个成员都包含一个字符串,其内容如下:“1234567,100,110”,已经用空格修饰,值之间用单个逗号。所有的值都应该是非负的。用我最初粘贴的代码,dataArray出来nil。 –
那么,没有换行符?你不能在'd3.csvParseRows'中使用它:函数怎么知道它正在处理哪一行? –