如何将数组保存到文件中,然后再将其读入nodejs / JavaScript中的数组变量中?

时间:2019-07-05 13:35:27

标签: javascript arrays node.js

在nodejs中,我想将一些数据读入一个数组,该数组先前已保存到文件中。原始数据以数组的形式构造。示例:

let arr = [
  'id-001': [ '123', '246', '234' ],
  'id-002': [ '789', '235' ],
  ... and so on
];

它保存如下:

fs.writeFileSync(dirpath + 'data.txt', arr);

这部分工作正常。该文件包含以下字符串:

[
  'id-001': [ '123', '246', '234' ],
  'id-002': [ '789', '235' ],
  ... and so on
]

现在我想我可以读文件了

let data = fs.readFileSync(filePath, 'utf8');

...有效...

做类似的事情

eval('let arr = ' + data);

let arr = eval(data);

甚至

const vm = require('vm')
let arr = vm.runInNewContext(arr, {data})

等等。什么都没有。它的行为很奇怪,似乎什么也没发生,评估之后的代码似乎没有执行。没有错误。

可能是什么问题?有更好的方法吗?

3 个答案:

答案 0 :(得分:4)

读取文件后,您可以使用JSON.parse来解析文件内容,这应该会使文件起作用。

此外,您将希望保留数据的JSON.stringify ed表示形式。

这是显示整个过程的最小示例:

const fs = require('fs');

function write(array, path) {
    fs.writeFileSync(path, JSON.stringify(array));
}

function read(path) {
    const fileContent = fs.readFileSync(path);
    const array = JSON.parse(fileContent);
    return array;
}

write(['a', 'b'], '/my/path/test.txt');
const arr = read('/my/path/test.txt');
console.log(arr);

答案 1 :(得分:0)

编写文件时,您应该stringify

fs.writeFileSync(dirpath + 'data.txt', JSON.stringify(arr));

然后,您只需要将文件中的字符串数据parse返回到javascript对象

let data = JSON.parse(fs.readFileSync(filePath, 'utf8'));

答案 2 :(得分:0)

首先纠正阵列并写入/读取文件

const fs = require('fs');

let dir = './data.txt';

let arr  = {'id-001': [ '123', '246', '234' ],
             'id-002': [ '789', '444' ]};

fs.writeFileSync(dir, JSON.stringify(arr));

let data = fs.readFileSync(dir, 'utf8');

console.log(data);