如何将数组写入nodejs中的文件并保留方括号?

时间:2014-04-05 16:44:28

标签: javascript node.js

我想在.js文件中写一个矩阵。当我使用console.log(矩阵)时,一切都很好但是当我把它写到文件时,它会以不同的方式出现。

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...

所有数字用逗号分隔,没有括号。如何防止它转换为该格式?谢谢。

3 个答案:

答案 0 :(得分:5)

在保存之前对它进行字符串化(JSON.stringify),然后在重新读取时将其解析(JSON.parse)。

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

然后回读

var matrix = JSON.parse(contents);

答案 1 :(得分: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) {
    ...
}

答案 2 :(得分:1)

系统不知道你想用[]将数组存储到文件中。 它只是将数组的内容放到文件中。