Javascript读取文本文件并将值附加到数组

时间:2014-07-15 10:49:55

标签: javascript arrays

我在使用函数填充JavaScript数组时遇到问题...

我有一些使用JavaScript的图表软件。我可以直接将自己的值输入到数组中,以创建我想要的图表,如下所示:

var data_array=[[0,170],[0,185],[0,179]]

数组中的第一个值对应于样本号(e,g,0),第二个值对应于高度(例如170,185等)。 这有效,但我最终会有数千个值的巨大列表。高度值将存储在文本文件中。每个样本都会有一个不同的文件。文本文件将包含由行分隔的简单值列表。

我需要程序做的是打开一个文本文件并提取值,然后将它们附加到数据数组中。到目前为止,我有这个:

$.get('sample0.txt', function(data, data_array){

    var lines=data.split('\n');
    for (var i=0; i<lines.length-1;i++){
        var item=lines[i];
        data_array.push([0,item]);
    }
    return data_array
}

虽然我知道它正确地从文本文件中提取值,但这并不起作用。我不担心样品编号,因为我可以为每个文件设置此项。我的问题是如何填充数组并使该数组存在于函数之外。

我通常用PHP编写代码,我很抱歉我的JavaScript知识非常基础!

2 个答案:

答案 0 :(得分:0)

// set this somewhere outside of the $.get callback.
// no need to pass it in as it will be available in that scope.
var data_array = [];

$.get('sample0.txt', function(data) {
    var lines=data.split('\n');
    for (var i=0; i<lines.length;i++){
        var item=lines[i];
        data_array.push([0,item]); // modify data_array here
    }
    // no need to return it
});

这是一个非常简化的测试:http://jsfiddle.net/4GMMd/

另请注意,在for循环中-1之后没有lines.length,除非您的文件以空白行结尾,而您不想阅读。

答案 1 :(得分:0)

如果我正确理解您的问题,您只需要在请求函数范围之外声明data_array。另外,你的循环不正确。它应该是i<lines.length而不是lines.length-1,除非您打算遗漏最后一行。

var data_array = [];
$.get('sample0.txt', function(data){

    var lines=data.split('\n');
    for (var i=0; i<lines.length;i++){
        var item=lines[i];
        data_array.push([0,item]);
    }
}