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(数组)使用Regex和JSON.parse的代码>成本更高。按如下所示使用数组到矩阵
const original=“54744973745276742166937478367440391403392385405375421336447”;
常量arrayToMatrix=(数组,列)=>数组(Math.ceil(array.length/columns)).fill(“”).reduce((acc,cur,index)=>{
返回[…acc,[…数组].拼接(索引*列,列)]
}, []);
const result=arrayToMatrix(原始分割('),'),2);
控制台日志(结果)代码>字符串中是否有可能有奇数个数字。例:1,2,3
?如果是这样的话,输出应该是什么?谢谢尼娜,我认为你的是最简单的解决方案。非常感谢您的努力:)