2014-04-05 57 views
2

我想寫一個.js文件的矩陣。當我使用console.log(矩陣)時,一切都很好,但是當我將它寫入文件時,它會以不同的方式出現。如何將數組寫入nodejs中的文件並保留方括號?

var fs = require("fs"); 
var matrix = new Array(10); 
for(var i=0;i<matrix.length;i++) matrix[i]=[]; 

for (var i = 0; i < 100 ; i++) 
{ 
    var n = i%10; 
    matrix[n].push(i);  
} 

console.log(matrix); 

//write it as a js array and export it (can't get brackets to stay) 
fs.writeFile("./matrixtest.js", matrix, function(err) { 
if(err) { 
     console.log(err); 
    } 
    else { 
    console.log("Output saved to /matrixtest.js."); 
    } 
});  

所以的console.log給我[0,10,20,30 ... 100],...,1,11,21,31,... 91]和等等。但是打開matrixtest.js只是這個:

0,10,20,30,40,50... 

所有的數字用逗號分隔,沒有括號。我如何防止轉換爲該格式?謝謝。

回答

2

將數組寫入文件時,它將轉換爲字符串,因爲JavaScript無法弄清楚如何按原樣寫入數組。這就是爲什麼它失去了格式。您可以將數組轉換成一個像這樣的字符串,並檢查

var array = [1, 2, 3, 4]; 
console.log(array.toString()); 
// 1,2,3,4 

因此,要解決這個問題,你可能需要將其轉換成JSON字符串這樣

fs.writeFile("./matrixtest.js", JSON.stringify(matrix), function(err) { 
    ... 
} 
+0

感謝您的解釋!那樣做了。 – Henry

5

字符串化它(JSON。字符串化)之前保存然後分析它(JSON.parse)在讀它的時候了。

fs.writeFile("./matrixtest.js", JSON.stringify(matrix), function(err) { 
    if(err) { 
     console.log(err); 
    } 
    else { 
    console.log("Output saved to /matrixtest.js."); 
    } 
}); 

然後在

012回讀時
1

系統不知道你想用[]將數組存儲到文件中。 它只是將數組的內容放入文件中。