簡體   English   中英

ReplaceAll 不替換所有遞歸 function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM