如何使用match()方法拆分数组行以实现矩阵行复制?
解决方案
要实现你想要的矩阵行复制效果,用match()方法可以这样做:
直接针对每个单元素数组提取字符串,重复拼接后用原字符串作为正则匹配规则,配合全局标志g来获取重复两次的结果:
let matrix = [['hello'], ['world']]; matrix = matrix.map(x => { const str = x[0]; // 重复字符串后,用原字符串全局匹配,得到两个相同元素的数组 return str.repeat(2).match(new RegExp(str, 'g')); });
如果想写得更简洁,也可以改成链式调用:
let matrix = [['hello'], ['world']]; matrix = matrix.map(x => x[0].repeat(2).match(new RegExp(x[0], 'g')));
原理说明
x[0]提取出单元素数组里的目标字符串(比如'hello');str.repeat(2)生成拼接后的字符串(比如'hellohello');new RegExp(str, 'g')创建一个全局匹配原字符串的正则表达式;match()方法会找出所有匹配的结果,刚好返回包含两个原字符串的数组,符合你的需求。
内容的提问来源于stack exchange,提问作者Lelik
相关产品推荐
相关产品推荐

