使用分号行拆分csv文件会在javascript中将其拆分为2d数组(节点)
我有这样的数据:使用分号行拆分csv文件会在javascript中将其拆分为2d数组(节点),javascript,node.js,arrays,csv,file,Javascript,Node.js,Arrays,Csv,File,我有这样的数据: data = "1 2 3; 2 3 4; 5 6 7; 8 9 10;" 我希望数据如下所示: [ [1,2,3], [2,3,4], [5,6,7], [8,9,10] ] 我尝试过这种方法,但没有效果: var data = fs.readFileSync('data.txt', 'utf8') var two_dim_array = []; var current_row_as_array = []; for(var i=0;i
data =
"1 2 3;
2 3 4;
5 6 7;
8 9 10;"
我希望数据如下所示:
[
[1,2,3],
[2,3,4],
[5,6,7],
[8,9,10]
]
我尝试过这种方法,但没有效果:
var data = fs.readFileSync('data.txt', 'utf8')
var two_dim_array = [];
var current_row_as_array = [];
for(var i=0;i<4;i++){
data = data.split(";\n");
data[i] = [];
for(var j=0;j<data[i].length;j++){
current_row_as_array = data[i].split(" ")
}
two_dim_array.push(current_row_as_array);
}
console.log(two_dim_array);
var data=fs.readFileSync('data.txt','utf8')
var two_dim_数组=[];
var当前行作为数组=[];
对于(var i=0;i),您可以将原始数据拆分为<代码>;<代码>(接着是可选的空白,例如换行符-这是最容易用正则表达式完成的);从该数组中删除空白条目(由尾随<代码>;字符串中);然后使用应用String.split
按空格拆分这些字符串;最后使用Array.map
使用parseInt
将这些值转换为整数:
const data=“1 2 3\
2 3 4;\
5 6 7;\
8 9 10;"
常量结果=数据
.split(/;\s*/)
.filter(布尔值)
.map(s=>s.split(“”).map(v=>parseInt(v));console.log(result);
外部循环的目的是什么?2
从何而来?设置数据[i]=[];
?数据[i]的目的是什么.length
此后将始终为0
,因此内部循环永远不会执行。即使如此,当前行作为数组将在内部循环的每次迭代中被覆盖。您需要重新考虑您的逻辑。熟悉并使用可用的方法。