在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(”)
@ASDFGertestringMatrix.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的原因是我的多行文字字符串中有额外的”
(空格…:)