我有一个表单,一旦点击提交按钮,就会生成一个对象,每个键-值对都是按照以下模式构建的:inputId:inputValue,所以对象看起来像这样:
let inputsObj = {
templateList: 'blank',
agentsName: 'John',
agentsPhone: '000-000-0000'
}
然后,我需要替换字符串中inputIds的所有示例,因此字符串如下所示:
let template = "My name is agentsName and this is my phone number: agentsPhone"
我需要把它做成这样:
"My name is John and this is my phone number: 000-000-0000"
输入字段的数量是未知的(因为它取决于其他因素),而且它们不会总是相同的,所以我尝试创建一个函数来动态地替换这些占位符,我尝试循环inputsObj,然后将每个键替换为它的值:
let finalTemplate
const getReplacements = () => {
for (let replacement in inputsObj) {
finalTemplate = template.replaceAll(replacement, inputsObj[replacement])
return finalTemplate
}
return finalTemplate
}
例如,replacement
应该是agentsName
,inputsObj[replacement]
应该是John
(并且它将遍历整个对象,以便获得所有的键值对)。
但是这个方法不起作用。我猜是因为我尝试使用变量作为模式和替换(当我尝试使用常规字符串时,它确实起作用了,所以我知道其他一切都很好)。但是我不知道如何解决这个问题。有什么想法吗?
**EDIT:**我尝试使用模板文本,但不起作用
3条答案
按热度按时间j91ykkif1#
1.不能在循环的第一次迭代中返回
1.必须在
finalTemplate
上使用replaceAll
lbsnaicq2#
你可以像这样在你的例子中进行替换,你应该只在你的函数结束时返回结果:
或者,您可以使用
Object.keys
方法获取键数组,并使用reduce
以缩短语法:sgtfey8w3#
只需使用template littérals即可