我正在尝试将大量JSON文件加载到稍后要引用的数组中,但Node一直声明它们未定义。我有以下代码:
var myarray = [];
(...)
var loading_num = 001; // will be incremented in a loop to load data
myarray[loading_num] = fs.readFileSync("data/" + loading_num);
(...)
var reference_num = "001"; // the number being used to pull the appropriate record
(...)
console.log(myarray[reference_num].name); // just testing to attempt to decipher why it doesn't work, I'll actually be using the data obviously
每个JSON文件都有一个名为name
的值,我还没有实现加载所有这些的逻辑,因为我仍然只是试图让它工作。
我是否误解了Javascript数组或对象?我究竟做错了什么?有很多文件,它们的数量可能会有所不同,所以我必须以类似的方式加载它们。
答案 0 :(得分:1)
您应该解析文件内容,以便将原始数据转换为JavaScript对象。
myarray[001] = JSON.parse(fs.readFileSync("data/001"));
答案 1 :(得分:0)
首先。 fs.readFileSync
读取任意文件。如果您知道您的文件是JSON并且您想将其转换为js,则需要使用JSON.parse
对其进行解析。
然后001
为1
,如果您希望它是一个用引号'001'
包裹它的字符串
数组索引从0开始。
var myarray = [];
myarray.push(JSON.parse(fs.readFileSync("data/001")));
console.log(myarray[0].name);
或
var myarray = {}; // use object
myarray['001'] = JSON.parse(fs.readFileSync("data/001"));
var reference_num = "001";
console.log(myarray[reference_num].name);