我怎么能写一个数组到一个文件在nodejs并保留方括号?

我想写一个.js文件的matrix。 当我使用console.log(matrix)一切都很好,但是当我把它写入文件它出来不同。

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

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

当你写一个数组到一个文件时,它将被转换成一个string,因为JavaScript无法弄清楚如何编写一个数组。 这就是为什么它失去了格式。 你可以将数组转换为像这样的string并进行检查

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

所以,要解决这个问题,你可能想把它转换成一个像这样的JSONstring

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

在保存之前对其进行string化(JSON.stringify),然后在读入时对其进行parsing(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); 

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

  • 所以,首先你需要将你想要写入的文件转换成JSON格式。 JSON.stringify()方法将JavaScript值转换为JSONstring
  • 然后,将JSONstring写入文件。
  • 然后,在阅读时使用JSON.parse()。 JSON.parse()方法分析JSONstring,构造string描述的JavaScript值或对象

     fs.writeFile('./matrix.js', JSON.stringify(matrix), function (err) { if(err) { console.log(err); } }) fs.readFile('./matrix.js', function(err, data) { console.log(JSON.parse(data)); //Do whatever you want with JSON.parse(data) });