javascript - JS - 让功能重复直到满足条件

标签 javascript function

这看起来很简单,但我仍然遇到困难(我比较新)。

我有一个函数 replaceNextParameter(),它遍历一个字符串并替换我标记为 sub1sub2 的两个字符串之间的文本。一个字符串可能有 0 个、1 个或多个 sub1sub2。我希望它执行函数 replaceNextparameter 直到不再有 sub1sub2 存在并返回结果。

这是我的代码:

function findAllParametersInString (string, sub1, sub2, parameterAndInputArray) {
    newString = string
    if (newString.indexOf(sub1) > -1 && newString.indexOf(sub2) > -1) {
        newString = replaceNextParameter(sub1, sub2, newString, parameterAndInputArray);
    }
    return newString
};

这是它应该做什么的一个活生生的例子

//data:
const paramsArray = [
    {param: "company", input: "COMPANY"},
    {param: "url", input: "URL"},
]
const sampleMessage = "BlaBlaBla {{company}} and {{url}}"

findAllParametersInString(sampleMessage,'{{', '}}', paramsArray);
//Should return "BlaBlaBla COMPANY and URL"

知道如何解决吗?目前它只返回 "BlaBlaBla COMPANY and {{url}}"

最佳答案

我建议您将 param 值用作键,将 input 值用作单个对象中的值。像这样:

var params = {
    company: "COMPANY",
    url: "URL"
};

现在使用这个简单的函数:

var sampleMessage = "BlaBlaBla {{company}} and {{url}}";

function replace(str, map) {
    for (var key in map) {
        str = str.split('{{' + key + '}}').join(map[key]);
    }
    return str;
}

replace(sampleMessage, params); // -> "BlaBlaBla COMPANY and URL"

您可以在 replace 函数中使用 {{}} 的参数

关于javascript - JS - 让功能重复直到满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46778031/

相关文章:

mysql - 为什么这个mysql函数总是返回零值?

c - 如何理解函数中的指针

php - 如何在 IF 语句中使用 php 函数

javascript - 带星号的正则表达式电话号码

javascript - AngularJS 的链式 promise

javascript - 是否可以在nodejs中实现多线程?

javascript - 使用链接中的 <object > 或 &lt;iframe&gt; 重新加载页面

javascript - IE 11 中的 session 存储

javascript - Asp Net 2.0 - 验证器、IE10 和旧的 Javascript

javascript - Javascript 中的自调用函数有害吗?