javascript - 在javascript中将线性字符串替换操作更改为数组

标签 javascript string

我想将以下代码更改为数组,因为每当我想添加要替换的新字符串时,我都必须编写“roman_ok”+number。如果您要添加数百个字符串,这并不方便。谁能告诉我怎么做吗?

function roman_conversion(format) {
    var roman_ok = format.replace(/./gm, convert_text);
    var roman_ok2 = roman_ok.replace(/l%r/g, "ll");
    var roman_ok3 = roman_ok2.replace(/l%n/g, "ll");
    var roman_ok4 = roman_ok3.replace(/nr/g, "ll");
    var roman_ok5 = roman_ok4.replace(/l%y/g, "ry");
    var roman_ok6 = roman_ok5.replace(/l%w/g, "rw");
    var roman_ok7 = roman_ok6.replace(/kn/g, "ngn");
    var roman_ok8 = roman_ok7.replace(/kr/g, "ngn");
    var roman_ok9 = roman_ok8.replace(/km/g, "ngm");
    var roman_ok10 = roman_ok9.replace(/tn/g, "nn");
    var roman_ok11 = roman_ok10.replace(/tr/g, "nn");
    var roman_ok12 = roman_ok11.replace(/tm/g, "nm");
    var roman_ok13 = roman_ok12.replace(/mr/g, "mn");
    var roman_ok14 = roman_ok13.replace(/pn/g, "mn");
    var roman_ok15 = roman_ok14.replace(/pr/g, "mn");
    var roman_ok16 = roman_ok15.replace(/pm/g, "mm");
    var roman_ok17 = roman_ok16.replace(/ngr/g, "ngn"); 
    return roman_ok17;

最佳答案

您可以使用reduce为此:

var replacements = [[/foo/, 'bar'], [/baz/, 'quux'], ...];
function roman_conversion(format) {
    return replacements.reduce((prev, curr) => prev.replace(curr[0], curr[1]), format);
}

编辑:此处使用 ES6 箭头函数语法,请随意替换为 function(prev, curr) { ... }

关于javascript - 在javascript中将线性字符串替换操作更改为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38939687/

相关文章:

javascript - Firefox 上的绝对和固定定位错误?

C# - 使用字符串命名单选按钮并访问其属性

尽管没有空终止字符串,但行为是否正确?

C++ 将多个字符串更改为一个枚举

javascript - 如何更新 meteor.js 中的 Mongodb 集合?

javascript - Angular2+,检查数组中是否存在具有类定义的值

javascript - 在 iPhone 模拟器上显示谷歌地图 - Phonegap

javascript - jQuery 中 $ 后面什么时候应该使用句号?

java - 如何在不使用 split 方法或使用数组的情况下将字符串拆分为单词?

string - 快速 SQL 问题