如何在JavaScript中结合for循环与replace方法实现批量字符串替换?
问题原因
- 你在每次循环中都基于原始未修改的
userlist执行替换,前一次循环的修改结果会被后一次操作直接覆盖,最终只能保留最后一个ignoredid对应的替换效果 - 没有提前初始化
mylist为原始字符串,每次直接赋值会丢失之前的修改记录
修正后代码
ignoredids = [{"ignoredid":"3329"},{"ignoredid":"25895"}]; userlist = `<div id="u343">something</div><div id="u3143">something</div><div id="u25895">something</div><div id="u5343">something</div><div id="u3329">something</div>`; // 先将结果变量初始化为原始字符串 let mylist = userlist; for (let { ignoredid } of ignoredids) { // 每次都基于上一轮修改后的结果继续替换 mylist = mylist.replace(`<div id="u${ignoredid}">something</div>`,`<div id="u${ignoredid}">ignore this</div>`); }
执行上述代码后输出的mylist就和你预期的结果完全一致。
内容的提问来源于stack exchange,提问作者user9638079
相关产品推荐
相关产品推荐

