Javascript 将逗号分隔的数字字符串转换为二维数组

Javascript 将逗号分隔的数字字符串转换为二维数组,javascript,regex,Javascript,Regex,我有一组数字,如下所示: var original = "547,449,737,452,767,421,669,367,478,367,440,391,403,392,385,405,375,421,336,447"; 我想把这个字符串转换成二维数组,如下所示: [[547, 449] [737, 452] [767, 421] [669, 367] [478, 367] [440, 391] [403, 392] [385, 405] [375, 421] [336, 447]] 但我做

我有一组数字,如下所示:

var original = "547,449,737,452,767,421,669,367,478,367,440,391,403,392,385,405,375,421,336,447";
我想把这个字符串转换成二维数组,如下所示:

[[547, 449] [737, 452] [767, 421] [669, 367] [478, 367] [440, 391] [403, 392] [385, 405] [375, 421] [336, 447]]
但我做这件事有困难。我尝试使用正则表达式:

var result = original.replace(/([-\d.]+),([-\d.]+),?/g, '[$1, $2] ').trim();
但结果是以下字符串的而不是数组:

[547, 449] [737, 452] [767, 421] [669, 367] [478, 367] [440, 391] [403, 392] [385, 405] [375, 421] [336, 447]

使用全局正则表达式匹配两段数字可能更容易,然后用逗号分割每个匹配项并强制转换为数字:

var original=“54744973745276742166937478367440391403392385405375421336447”;
常量arr=原始
.match(/\d+,\d+/g)
.map(substr=>substr.split(',').map(Number));

控制台日志(arr)您可以查找中间带有逗号的数字,替换、添加brakets并将其解析为JSON

var original=“54744973745276742166937478367440391403392385405375421336447”,
array=JSON.parse('['+original.replace(/\d+,\d+/g,[$&]')+']);

console.log(数组)
您可以使用带有
%
运算符的
拆分
减少
方法来创建所需的结果

var original=“54744973745276742166937478367440391403392385405375421336447”;
const result=original.split(',).reduce((r,e,i)=>{
如果(i%2==0)r.push([]);
r[r.length-1]。推(e);
返回r;
}, [])

console.log(result)
这可能是使用
.matchAll()
的一个很好的用例:

var original=“54744973745276742166937478367440391403392385405375421336447”;
var array=array.from(原始.matchAll(/(\d+),(\d+)/g),
([,…m])=>m.map(Number));

console.log(数组)成本更高。按如下所示使用数组到矩阵

const original=“54744973745276742166937478367440391403392385405375421336447”;
常量arrayToMatrix=(数组,列)=>数组(Math.ceil(array.length/columns)).fill(“”).reduce((acc,cur,index)=>{
返回[…acc,[…数组].拼接(索引*列,列)]
}, []);
const result=arrayToMatrix(原始分割('),'),2);

控制台日志(结果)字符串中是否有可能有奇数个数字。例:
1,2,3
?如果是这样的话,输出应该是什么?谢谢尼娜,我认为你的是最简单的解决方案。非常感谢您的努力:)