我有一个包含以下数据的文本文件:
[2, 3, 4]
[1, 3, 2]
当我用fs.read
读取文件时,我得到了这样的字符串:
'[2,3,4]'
'[1,3,4]'
因此我的矩阵mat
的长度是错误的。
代码:
var mat = [];
var fs = require('fs');
fs.readFile('./data/outfilename', function(err, data) {
if (err) throw err;
var array = data.toString().split(/\r?\n/);
for (var i = 0; i < array.length; i++) {
if (array[i].length > 0) {
mat.push(array[i]);
}
}
console.log(mat.length);
console.log(mat[0].length);
});
我如何将读取线转换为带数字的数组?
答案 0 :(得分:2)
您可以使用JSON.parse
将数组中的字符串转换为数字数组:
var array = ['[2,3,4]', '[1,3,4]'];
mat = array.map(s => JSON.parse(s));
console.log(mat);
&#13;
答案 1 :(得分:1)
您可以将字符串解析为JSON:
// dummy data
var array = ['[2,3,4]', '[18,4,3]'];
var mat = [];
for (var i = 0; i < array.length; i++) {
mat.push(JSON.parse(array[i]));
}
console.log(mat);
或使用map
:
// dummy data
var array = ['[2,3,4]', '[18,4,3]'];
var mat = array.map(JSON.parse);
console.log(mat);
答案 2 :(得分:1)
var matrix = array.map(JSON.parse)
会将您的数组转换为您想要的矩阵。
每一行的字符串都是数字数组的JSON表示,因此当您在每一行上应用JSON.parse时,您将拥有相应的数组。