Javascript 有没有一种优雅的方法可以从这个数组中提取单词[“test1,test2}”,“test3”,“test4,test5}”,并将它们放在一个数组中?

Javascript 有没有一种优雅的方法可以从这个数组中提取单词[“test1,test2}”,“test3”,“test4,test5}”,并将它们放在一个数组中?,javascript,arrays,regex,Javascript,Arrays,Regex,基本上我想从 ["{ test1, test2 }", "test3", "{test4, test5}"] 到 我正在使用regex,matchTest是保存regex的变量,用来匹配单词并用匹配项填充这个数组,同时在同一个循环中修复数组 while (regexMatches = matchTest.exec(sourceCode)) { testArray.push(regexMatches[1].replace(/\W/g, " ").split(" ")); testA

基本上我想从

["{ test1, test2 }", "test3", "{test4, test5}"]

我正在使用regex,matchTest是保存regex的变量,用来匹配单词并用匹配项填充这个数组,同时在同一个循环中修复数组

 while (regexMatches = matchTest.exec(sourceCode)) {
   testArray.push(regexMatches[1].replace(/\W/g, " ").split(" "));
   testArray = [].concat(...testArray);
   testArray = testArray.filter(testArray => testArray != '');
 }

我做这件事的方式很有效,但看起来很混乱。任何关于如何改进此功能的帮助都将不胜感激。

您应该将
匹配设置为

var string='[“{test1,test2}”,“test3”,“{test4,test5}]”;
var数组=string.match(/\w+\d+/g);

console.log(数组)你应该把
匹配

var string='[“{test1,test2}”,“test3”,“{test4,test5}]”;
var数组=string.match(/\w+\d+/g);
console.log(数组)我将使用
.reduce()
如下:

var-input=[“{test1,test2}”,“test3”,“{test4,test5}”]
var输出=输入。减少((acc,v)=>{
acc.push(…v.replace(/[^\w,]/g,”).split(“,”))
返回acc
}, [])
console.log(输出)
我将使用
.reduce()
如下:

var-input=[“{test1,test2}”,“test3”,“{test4,test5}”]
var输出=输入。减少((acc,v)=>{
acc.push(…v.replace(/[^\w,]/g,”).split(“,”))
返回acc
}, [])

console.log(output)
实际上这个/[^\w,]/g来自您的解决方案,实际上这个/[^\w,]/g来自您的解决方案,呵呵
 while (regexMatches = matchTest.exec(sourceCode)) {
   testArray.push(regexMatches[1].replace(/\W/g, " ").split(" "));
   testArray = [].concat(...testArray);
   testArray = testArray.filter(testArray => testArray != '');
 }
var array = ["{ test1, test2 }", "test3", "{test4, test5}"];
var output = array.join(',').replace(/[^\w,]/g,'').split(',');