Javascript 用数组中的值替换所有出现的子字符串

Javascript 用数组中的值替换所有出现的子字符串,javascript,arrays,Javascript,Arrays,我有两个数组。一个数组包含要搜索的字符,另一个数组包含要替换的字符。我希望在字符串中找到第一个数组中每个项目的所有匹配项,并用第二个数组中相应的项目替换它们 let converted = ''; let bbCodes = [ "[code]", "[/code]", "[h1]", "[/h1]" ]; let replacers = [ "<code>", "</code>", "<h1>", "</

我有两个数组。一个数组包含要搜索的字符,另一个数组包含要替换的字符。我希望在字符串中找到第一个数组中每个项目的所有匹配项,并用第二个数组中相应的项目替换它们

let converted = '';
    let bbCodes = [
      "[code]", "[/code]", "[h1]", "[/h1]"
    ];
    let replacers = [
      "<code>", "</code>", "<h1>", "</h1>"
    ];
    let needsConverted = this.state.txtAreaVal;
    bbCodes.map((code, index) => {
        converted = needsConverted.replace(code, replacers[index]);
        console.log(converted);
    });
    console.log(converted);
  }
输出不完全是我所期望的。

我想,您正试图实现以下目标:

让转换=; 设bbcode=[ [code]、/code]、[h1]、/h1] ]; 让替换项=[ , , ]; let needsConverted='Lorem ipsum是行业中的[h1]虚拟文本[/h1]; bbCodes.mapcode,索引=>{ needsConverted=needsConverted.replacecode,replacers[index]; console.logneeds已转换;
}; 问题是您没有跟踪字符串的已更新版本

在第一次迭代中,它将第一个字[code]替换为。然后将此值指定给已转换的

在第二次迭代中,替换原始字符串的第二个单词,并将结果分配给converted,从而失去对上一次迭代的更改

您不需要另一个变量,您可以重用初始字符串并在每次迭代中不断替换它

另外,您可以使用forEach来代替map,这更合适,因为您没有改变数组中的值

设bbcode=[ [code]、/code]、[h1]、/h1] ]; 让替换项=[ , , ]; let needsConverted='这是一个[code]代码[/code]测试,请参见[h1]此处[/h1]'; bbCodes.forEachcode,索引=>{ //您不需要其他函数,只需将当前字符串重新分配给它的新值即可。 needsConverted=needsConverted.replacecode,replacers[index]; };
console.logneeds已转换;回答了主要问题,但您还需要每次编辑编辑的字符串,而不是原始字符串。这是否回答了您的问题?或者我看到了那一页,它帮助我达到了这一点。似乎我只需要编辑编辑的字符串,正如@ASDFGerte所提到的。也使用forEach而不是map,因为正如在接受的答案中提到的,map是不需要的,因为我没有对数组值做任何操作。谢谢大家的帮助,太好了。我知道我遗漏了一些小细节。我最初使用forEach,切换到map并没有多大意义,哈哈。