2016-07-26 104 views
0

我正在嘗試將大量的JSON文件加載到稍後引用的數組中,但Node始終聲明它們未定義。我沿着線代碼:使用JSON數據填充Javascript數組

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

你試過'的console.log(myArray的[loading_num]。名稱);'? – wrldbt

回答

0

首先。 fs.readFileSync讀取任意文件。如果你知道你的文件是JSON並且你想把它轉換成js,你需要使用JSON.parse來解析它。

然後0011,如果你希望它是一個字符串引號把它包'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); 
+0

第二個例子正是我想要實現的。我不得不使用引用的零引用,並且我不知道它必須通過JSON.parse運行,如果它已經是JSON格式的文件,儘管我認爲這在我思考時是有意義的,但程序不知道任何更好。謝謝 – FatalKeystroke

+0

爲什麼不只是'需要'JSON文件? – 2016-07-26 16:12:40

+0

@torazaburo require將整個文件內容放入其緩存中。這可能會產生不良影響。如果由於某些外部更改而決定重新從磁盤讀取文件,則需要手動從緩存中刪除內容。如果只需要對數據進行一些預測,它將防止垃圾收集不是您想要的。 –

1

你應該解析啓動文件內容,以便將原始數據轉換爲JavaScript對象。

myarray[001] = JSON.parse(fs.readFileSync("data/001")); 
+0

你沒有給出'需要'JSON文件的最佳答案。 – 2016-07-26 16:56:16

+0

我已經看到幾個upvotes WRONG的答案。我給出了第一個正確的答案,重點關注的是唯一出現問題的唯一錯誤的源頭,以及建立在這個問題上的人。如果給出一個正確的,但較少羅嗦的答案獲得downvotes,但給不正確的答案得到upvotes,那麼我寧願不嘗試。 – undetected

+0

@undetected只是要清楚。你的答案是第二個。它沒有增加我的內容,仍然包含一些錯誤:)雖然我不認爲它值得downvote。 –