我有一个如下所示的txt文件:
ID Number Hour Name Mood Seconds Hour2
1 29.1 11:32:37 Tim Good 0954 11:32:34 PM
2 31.9 11:33:19 Tim Fine 1251 11:33:15 PM
3 32.0 11:54:16 Tim Excellent 1897 11:54:12 PM
4 36.6 12:00:43 Time Good 0997 12:00:37 PM
正如我们所看到的,它不是CSV值,因为它是空格分隔的。如何将这些数据存储在变量中(每列一个)?一旦我使用html代码或javascript或jQuery将这些数据存储在变量中,我想使用Flot Charts绘制它们,但这将在稍后出现。
答案 0 :(得分:0)
这应该有用。您可能需要稍微调整一下,但这应该对您有帮助。
首先,我们需要加载文件并将值赋给变量。
var fileContent;
$.ajax({
url : "text.txt",
dataType: "text",
success : function (data) {
fileContent = data;
}
});
然后,正如我所说,你必须寻找空间和换行符。你知道,当发生换行时,所有这些都“重新开始”可以这么说。
所以让我们使用jQuery的.split()
函数,如下所示:
var rows = fileContent.split("\n");
现在你应该有一个长度为5的数组,每行一个。循环遍历这些并通过" "
拆分它们。我们跳过第一行(索引0),因为它们不是数据。同样如评论所示,必须跳过最后一个空格,因为这是数据的一部分。
var id = "";
var number = "";
var hour = "";
var name = "";
var mood = "";
var seconds = "";
var hour2 = "";
var array = [id,number,hour,name,mood,seconds,hour2];
for(var j = 0; j < rows.length; j++){
var columns = rows[j].split(" ");
for(var i = 0; i < columns.length; i++) {
if(i == 5){
$array[i].= columns[i]+" "+columns[i+1];
break;
}
array[i].= columns[i];
}
}
console.log(array);
这应该会对你有所帮助。可能不完美,但你明白了。
答案 1 :(得分:0)
将数据拆分为行。然后拆分第一行并将结果作为其他数据/行的键。之后,尝试阻止未定义的列(&#39; PM&#39;)并将结果添加到上一列。
var data = 'ID Number Hour Name Mood Seconds Hour2\n1 29.1 11:32:37 Tim Good 0954 11:32:34 PM\n1 31.9 11:33:19 Tim Fine 1251 11:33:15 PM\n3 32.0 11:54:16 Tim Excellent 1897 11:54:12 PM\n4 36.6 12:00:43 Time Good 0997 12:00:37 PM';
var newData = [], keys;
data.split('\n').forEach(function (row, i) {
var res;
if (!i) {
keys = row.split(' ');
} else {
res = {};
row.split(' ').forEach(function (el, j) {
if (keys[j]) {
res[keys[j]] = el;
} else {
res[keys[j - 1]] += ' ' + el; // time correction
}
});
newData.push(res);
}
});
document.getElementById('out').innerHTML = '<pre>' + JSON.stringify(newData, null, 4) + '</pre>';
&#13;
<div id="out"></div>
&#13;