将字符串解析为 javascript 中的二维整数数组
Parse string into 2d integer array in javascript
我需要解析这个字符串
d = "1 3 2 1,1 1 2 4,1 1 2 5,1 1 2 6,1 7 2 1,1 8 2 1,1 9 2 1,1 1 3 4,1 1 3 5,1 1 3 6,1 7 3 1,1 1 3 8,1 1 3 9,1 5 4 1,1 6 4 1,1 7 4 1,1 1 4 8,1 1 4 9,1 6 5 1,1 7 5 1,1 1 5 8,1 9 5 1,1 7 6 1,1 8 6 1,1 1 6 9,1 1 7 8,1 9 7 1,1 9 8 1,1 4 3 2,1 2 3 5,1 6 3 2,1 2 3 7,1 2 3 8,1 9 3 2,1 2 4 5,1 2 4 6,1 7 4 2,1 8 4 2,1 2 4 9,1 6 5 2,1 2 5 7,1 2 5 8,1 2 5 9,1 2 6 7,1 2 6 8,1 9 6 2,1 8 7 2,1 2 7 9,1 2 8 9,1 5 4 3,1 3 4 6,1 3 4 7,1 8 4 3,1 3 4 9,1 6 5 3,1 3 5 7,1 3 5 8,1 3 5 9,1 7 6 3,1 3 6 8,1 3 6 9,1 8 7 3,1 3 7 9,1 9 8 3,1 4 5 6,1 4 5 7,1 4 5 8,1 9 5 4,1 7 6 4,1 4 6 8,1 9 6 4,1 4 7 8,1 4 7 9,1 4 8 9,1 7 6 5,1 5 6 8,1 5 6 9,1 8 7 5,1 9 7 5,1 5 8 9,1 6 7 8,1 9 7 6,1 6 8 9,1 9 8 7"
转换成如下所示的二维数组:
d = [[1,3,2,1][1,2,3,4],[1,2,3,4]...... and so on]
其中字符串被转换为单个整数。
有人能在 10 行或更少的时间内完成吗?我已经弄清楚了,但我的代码一团糟,而且必须比需要的长
编辑 - 这是我糟糕的代码:
let ds = d.split(",");
let temp = [];
for (i= 0; i<=ds.length; i++){
temp.push([ds[i]])
}
let set = [];
for (i= 0; i<=temp.length-1; i++){
let t2 = temp[i].toString();
let t3 = t2.split(" ")
set.push(t3);
}
for (i= 0; i<=set.length-1; i++){
for (j= 0; j<=3; j++){
set[i][j] = Number(set[i][j]);
}
}
console.log(set);
用逗号分隔,然后将每个子字符串映射到空格分隔:
const d = "1 3 2 1,1 1 2 4,1 1 2 5,1 1 2 6,1 7 2 1,1 8 2 1,1 9 2 1,1 1 3 4,1 1 3 5,1 1 3 6,1 7 3 1,1 1 3 8,1 1 3 9,1 5 4 1,1 6 4 1,1 7 4 1,1 1 4 8,1 1 4 9,1 6 5 1,1 7 5 1,1 1 5 8,1 9 5 1,1 7 6 1,1 8 6 1,1 1 6 9,1 1 7 8,1 9 7 1,1 9 8 1,1 4 3 2,1 2 3 5,1 6 3 2,1 2 3 7,1 2 3 8,1 9 3 2,1 2 4 5,1 2 4 6,1 7 4 2,1 8 4 2,1 2 4 9,1 6 5 2,1 2 5 7,1 2 5 8,1 2 5 9,1 2 6 7,1 2 6 8,1 9 6 2,1 8 7 2,1 2 7 9,1 2 8 9,1 5 4 3,1 3 4 6,1 3 4 7,1 8 4 3,1 3 4 9,1 6 5 3,1 3 5 7,1 3 5 8,1 3 5 9,1 7 6 3,1 3 6 8,1 3 6 9,1 8 7 3,1 3 7 9,1 9 8 3,1 4 5 6,1 4 5 7,1 4 5 8,1 9 5 4,1 7 6 4,1 4 6 8,1 9 6 4,1 4 7 8,1 4 7 9,1 4 8 9,1 7 6 5,1 5 6 8,1 5 6 9,1 8 7 5,1 9 7 5,1 5 8 9,1 6 7 8,1 9 7 6,1 6 8 9,1 9 8 7";
const arr = d
.split(',')
.map(str => str
.split(' ')
.map(Number)
);
console.log(arr);
我需要解析这个字符串
d = "1 3 2 1,1 1 2 4,1 1 2 5,1 1 2 6,1 7 2 1,1 8 2 1,1 9 2 1,1 1 3 4,1 1 3 5,1 1 3 6,1 7 3 1,1 1 3 8,1 1 3 9,1 5 4 1,1 6 4 1,1 7 4 1,1 1 4 8,1 1 4 9,1 6 5 1,1 7 5 1,1 1 5 8,1 9 5 1,1 7 6 1,1 8 6 1,1 1 6 9,1 1 7 8,1 9 7 1,1 9 8 1,1 4 3 2,1 2 3 5,1 6 3 2,1 2 3 7,1 2 3 8,1 9 3 2,1 2 4 5,1 2 4 6,1 7 4 2,1 8 4 2,1 2 4 9,1 6 5 2,1 2 5 7,1 2 5 8,1 2 5 9,1 2 6 7,1 2 6 8,1 9 6 2,1 8 7 2,1 2 7 9,1 2 8 9,1 5 4 3,1 3 4 6,1 3 4 7,1 8 4 3,1 3 4 9,1 6 5 3,1 3 5 7,1 3 5 8,1 3 5 9,1 7 6 3,1 3 6 8,1 3 6 9,1 8 7 3,1 3 7 9,1 9 8 3,1 4 5 6,1 4 5 7,1 4 5 8,1 9 5 4,1 7 6 4,1 4 6 8,1 9 6 4,1 4 7 8,1 4 7 9,1 4 8 9,1 7 6 5,1 5 6 8,1 5 6 9,1 8 7 5,1 9 7 5,1 5 8 9,1 6 7 8,1 9 7 6,1 6 8 9,1 9 8 7"
转换成如下所示的二维数组:
d = [[1,3,2,1][1,2,3,4],[1,2,3,4]...... and so on]
其中字符串被转换为单个整数。
有人能在 10 行或更少的时间内完成吗?我已经弄清楚了,但我的代码一团糟,而且必须比需要的长
编辑 - 这是我糟糕的代码:
let ds = d.split(",");
let temp = [];
for (i= 0; i<=ds.length; i++){
temp.push([ds[i]])
}
let set = [];
for (i= 0; i<=temp.length-1; i++){
let t2 = temp[i].toString();
let t3 = t2.split(" ")
set.push(t3);
}
for (i= 0; i<=set.length-1; i++){
for (j= 0; j<=3; j++){
set[i][j] = Number(set[i][j]);
}
}
console.log(set);
用逗号分隔,然后将每个子字符串映射到空格分隔:
const d = "1 3 2 1,1 1 2 4,1 1 2 5,1 1 2 6,1 7 2 1,1 8 2 1,1 9 2 1,1 1 3 4,1 1 3 5,1 1 3 6,1 7 3 1,1 1 3 8,1 1 3 9,1 5 4 1,1 6 4 1,1 7 4 1,1 1 4 8,1 1 4 9,1 6 5 1,1 7 5 1,1 1 5 8,1 9 5 1,1 7 6 1,1 8 6 1,1 1 6 9,1 1 7 8,1 9 7 1,1 9 8 1,1 4 3 2,1 2 3 5,1 6 3 2,1 2 3 7,1 2 3 8,1 9 3 2,1 2 4 5,1 2 4 6,1 7 4 2,1 8 4 2,1 2 4 9,1 6 5 2,1 2 5 7,1 2 5 8,1 2 5 9,1 2 6 7,1 2 6 8,1 9 6 2,1 8 7 2,1 2 7 9,1 2 8 9,1 5 4 3,1 3 4 6,1 3 4 7,1 8 4 3,1 3 4 9,1 6 5 3,1 3 5 7,1 3 5 8,1 3 5 9,1 7 6 3,1 3 6 8,1 3 6 9,1 8 7 3,1 3 7 9,1 9 8 3,1 4 5 6,1 4 5 7,1 4 5 8,1 9 5 4,1 7 6 4,1 4 6 8,1 9 6 4,1 4 7 8,1 4 7 9,1 4 8 9,1 7 6 5,1 5 6 8,1 5 6 9,1 8 7 5,1 9 7 5,1 5 8 9,1 6 7 8,1 9 7 6,1 6 8 9,1 9 8 7";
const arr = d
.split(',')
.map(str => str
.split(' ')
.map(Number)
);
console.log(arr);