在javascript中将多行数字字符串转换为双数组

在javascript中将多行数字字符串转换为双数组,javascript,arrays,Javascript,Arrays,我有一个字符串矩阵 stringMatrix = ` 1 0 0 0 1 0 0 0 0 ` 我想把它转换成一个双数组:[[1,0,0],[0,1,0],[0,0,1]];js-y的做法是什么 我尝试了matrix=values[0].trim().split('\n'),但这只适用于外层:[“10”、“0 1 0”、“0 0 0”];我可以做一个for循环,但我想知道是否有办法使用lambda表达式/胖箭头 //vanilla js只需拆分和映射就可以了 var stringMatrix=

我有一个字符串矩阵

stringMatrix = `
1 0 0
0 1 0
0 0 0
`
我想把它转换成一个双数组:
[[1,0,0],[0,1,0],[0,0,1]]
;js-y的做法是什么

我尝试了
matrix=values[0].trim().split('\n'),但这只适用于外层:
[“10”、“0 1 0”、“0 0 0”]
;我可以做一个for循环,但我想知道是否有办法使用lambda表达式/胖箭头


//vanilla js

只需拆分和映射就可以了

var stringMatrix=`
1 0 0
0 1 0
0 0 0
`
var res=stringMatrix.trim().split(“\n”).map(x=>x.split(/\s+/).map(编号))

log(res)
这将使用split和map为您提供一个数字数组作为输出
stringMatrix=`
1 0 0
0 1 0
0 0 0
`;
让结果=[];
stringMatrix=stringMatrix.trim().split('\n').map(函数(元素){
设ret=[];
for(让元素的数字匹配(/\d/g)){
ret.push(parseInt(数字));
}
返回ret;
});

console.log(stringMatrix)
stringMatrix.trim().split(“\n”).map(e=>e.split(”)
@ASDFGerte
stringMatrix.trim().split(“\n”).map(e=>e.split(“”.map(number))啊,是的,转换为数字。但是您不需要另一个
映射
,只需使用
Number(e.split(“”)
或可读性不好的imho
+e.split(“”)
。这应该是公认的答案。..imho..Question@adeneo:您能解释一下
split()
方法中的正则表达式序列发生了什么吗?e、 g,
拆分(/\s+/)
?我知道
\s
代表一个空格,但是开头和结尾的
/
代表什么呢?下面简单介绍一下:这个多行字符串(包含空格仅表示换行):
3,11,4,5,6,10 8-12,
(3,11..,4..,10..,每一行都是唯一的)生成这个矩阵:
[[3],[0,11,2,4],[0,4,5,6],[0,10,8,-12]
。请注意
0
数字中应该没有的地方?如何调整正则表达式字符串以删除这个额外的0?不管怎样,我的朋友,我最终发现了我的问题…我得到0的原因是我的多行文字字符串中有额外的
(空格…:)