[英]ReplaceAll not replacing all in recursive function
我正在使用遞歸的 function,它采用如下模板字符串:
<div class='${classes}'>
並將模板文字占位符 ${classes} 替換為 object 中的值,如下所示:
{ classes: 'bg-${color} text-${color}', color: 'blue' }
這里需要注意的是,在object內部,模板串嵌套比較多,所以才遞歸function。
我無法解決的問題是為什么替換所有 function 只替換 ${color} 的第一個實例,而第二個實例未定義。
下面的工作片段:
function buildTemplate(string) { var matched = false; string = string.replaceAll(/\$\{(.*?)\}/g, function (match, key) { if (match) { matched = true; } const selection = selectors[key]; delete selectors[key]; return selection; }); if (matched) { string = buildTemplate(string); } console.log(string); } let templateString = "<div class='${classes}'>"; const selectors = { classes: 'bg-${color} text-${color}', color: 'blue' } buildTemplate(templateString);
當您需要兩次時,您正在刪除selectors
。
刪除線;
// delete selectors[key]
或selection
什么也沒分配
當它是通過密鑰訪問的 object 時,無需刪除任何內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.