我有以下场景,其中有以下字符串
Edit: const message = results.doc.data().taskSettings.taskInProgressSettings.pushNotifications.onAssignmentNotifyEmployee.message;
我从 db 得到消息,变量不一定是 taskId , customerName
。它可以是 taskId、customerName、customerId、taskCreaterName、employeeName、employeeId
。该消息可能包含上述任何变量,我需要在运行时用它的值替换它们。
message:`Task ${taskId} assigned by ${taskCreaterName} for customer ${customerName}`
let taskId = T-100;
let taskCreaterName = 'mark';
let customerName = 'henry';
我想用它的值替换变量(taskId,taskCreaterName,customername),最终结果应该如下,
newMessage = Task T-100 assigned by mark for customer henry
实现此目标的最佳方法是什么。谢谢
最佳答案
为了以通用方式进行这项工作,您可以保留 1 个对象(例如我在下面创建的“withData”,而不是维护不同的变量)来存储要替换的值,并让通用函数(替换)处理所有更改,如下所示
let message = 'Task ${taskId} assigned by ${taskCreaterName} for customer ${customerName}'
let withData = {
taskId: 'T-100'
, taskCreaterName: 'mark'
, customerName: 'henry'
}
function replace(obj, withData) {
let result = message.slice(0)
for (let [key, value] of Object.entries(withData)) {
result = result.replace('${' + key + '}', value)
}
return result
}
let result = replace(message, withData)
console.log(result)
// In case Object.entries is not supported
function replace(obj, withData) {
let result = message.slice(0)
for (let key in withData) {
let value = withData[key]
result = result.replace('${' + key + '}', value)
}
return result
}
关于javascript - 如何用javascript中的值替换句子中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53298650/