【问题标题】:Node.js: File reading and putting string as array into arrayNode.js:文件读取并将字符串作为数组放入数组
【发布时间】:2013-03-07 19:06:31
【问题描述】:

我正在做一些项目,我需要读取一些文件并将拆分的(使用 \n - 新行)字符串作为数组放入数组中。这意味着使用fs.readFileSync(filepath, 'utf8').split('\n'); 读取文件的输出 是字符串,我需要将其转换为数组,但有问题,因为我不知道如何。有一些输入数据的例子:

[[164,17567,160,[]],[166,8675,103,[]],
[[164,17567,160,[]],[166,8675,103,[]],
[[164,17567,160,[]],[166,8675,103,[]],
[[164,17567,160,[]],[166,8675,103,[]]

我试图把它放在for循环中,但我无法以某种方式将它从字符串转换为数组,输出变成这样:

"[[164,17567,160,[]],[166,8675,103,[]]",
"[[164,17567,160,[]],[166,8675,103,[]]",
"[[164,17567,160,[]],[166,8675,103,[]]",
"[[164,17567,160,[]],[166,8675,103,[]]"

【问题讨论】:

    标签: javascript arrays string file node.js


    【解决方案1】:

    我建议你继续用换行符分割,然后重新组合成一个没有换行符的字符串,最后使用 JSON.parse 解析。

    var lines = fs.readFileSync(filepath, 'utf8').split('\n');
    var rawData = '';
    for (var l in lines){
        var line = lines[l];
        rawdata += line;
    }
    var data = JSON.parse('[' + rawdata + ']');
    

    但是!看起来(除非是拼写错误)每一行都有一个额外的左方括号。这些必须在解析之前删除,如果您可以控制它,最好从源数据中删除:)

    此外,要使其成为有效的 JSON,您必须将整个内容包装在“[]”中,如上所示。

    【讨论】:

    • var data = require(filepath); 对 .json 文件执行相同的技巧。
    • 我已经尝试解析它,但是这个函数从数组中删除了一些对象。最后解析的数组变成一个用逗号隔开的数字列表。
    • 我已经尝试根据您的评论改进答案,请看一下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    相关资源
    最近更新 更多