JQuery读取文本并安全地使用2D数组

时间:2014-09-03 12:43:07

标签: javascript jquery arrays

我有一个.txt文件作为输入,并希望将其保存到二维数组

示例输入:

  

21 16 91 //第一个数据块

     

22 156 106 //第二块数据

     

23 120 164 //第3块数据

     

24 159 207 //等

     

25 168 83

     

26 83 27

     

27 189 29

到目前为止

代码:

function leseConfig (input) {
 if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {

};

我如何实现我的目标?

也许有人能给我一个简短的例子来做这样的事情?

2 个答案:

答案 0 :(得分:1)

要在input准备后实际阅读reader文件,您可以使用

reader.readAsText(input.files[0]);

要在reader.onload中获取读取文件的文本,您可以使用

reader.result

Fiddle

所以有HTML:

<input id="file" type="file"/>
<input id="read" type="button" value="read"/>

您可以使用以下内容:

$(document).ready(function()
{
    $('#read').click(function()
    {
        leseConfig($('#file')[0]);
    });
});

function leseConfig(input)
{
    if (input.files && input.files[0])
    {
        var reader = new FileReader();
        reader.onload = function()
        {
            var arr = [];
            var rows = reader.result.split('\n');
            for (var i = 0; i < rows.length; i++)
            {
                var elements = rows[i].split(/\s/);
                if (elements.length >= 3)
                {
                    arr.push([elements[0], elements[1], elements[2]]);
                }
            }
            handleArray(arr);
        }
        reader.readAsText(input.files[0]);
    }
};

答案 1 :(得分:0)

这是将文件转换为2D数组的简单方法:

var array;
function leseConfig (input) 
{
     if (input.files && input.files[0]) 
     {
        var reader = new FileReader();
        reader.onload = function (e) 
        {
            array = e.target.result.split('\n');
            for(key in array)
                array[key] = array[key].split(' ');
        }
     }
}