存储来自txt文件的数据

时间:2015-06-23 08:15:25

标签: javascript jquery html text

我有一个如下所示的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绘制它们,但这将在稍后出现。

2 个答案:

答案 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;)并将结果添加到上一列。

&#13;
&#13;
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;
&#13;
&#13;