javascript - 在每次循环迭代时更改字符串
问题描述
我有以下问题:我有一个字符串,我需要替换不同的正则表达式部分。
因此我想循环它:
在我的情况下,它是一个 URL,我想为特定参数清空:
cleanURL(url, params) {
params.forEach((param) => {
url = this.updateUrlParameter(url, param, '');
});
而我有:
updateUrlParameter(url, param, value) {
const regex = new RegExp(`(${param}=)[^&]+`);
const newURL = url.replace(regex, `$1${value}`);
return newURL;
}
这是我让它工作的唯一方法,但现在我正在重新分配一个函数参数。这不是我想要的。
我的问题是
cleanURL(url, params) {
params.forEach((param) => {
this.updateUrlParameter(url, param, '');
});
}
对于每次迭代,总是将 SAME 传递url
到循环中。我最终只得到了最后一个替换。
我必须以某种方式将更改的字符串传递到下一个循环迭代中。
我怎么能做到这一点?也许朝这个方向发展?以某种方式嵌套并再次调用该函数?
while(outerI--){
(function(i){
i+=1;//doesn't affect outerI and you wanted 1-length so we add one.
//crap inside your forEach loop but without the i++
})(outerI)
}
我在这里找到: .forEach 循环:使用变量
很高兴在这里得到提示。谢谢你
干杯
解决方案
如果您不想改变参数,请使用临时变量来保存结果。
function updateUrlParameter(url, param, value) {
const newURL = url + param;
return newURL;
}
function cleanURL(url, params) {
let temp = url;
params.forEach((param) => {
temp = updateUrlParameter(temp, param, '');
});
return temp;
}
const params = [1, 2, 3, 4, 5];
const url = 'string';
console.log(cleanURL(url, params));
推荐阅读
- php - MySQL & Eloquent 查询
- apache - NiFi GenerateTableFetch 不存储每个 database.name 的状态
- sql-server - 将记录的数据库列中的数据分解为多条记录
- python - 如何使用 sklearn.countvectorizer?
- c# - 在 ASP.NET Core 中使用 ADO.NET 作为数据访问层
- python - 如何在 Google Dataflow 上安装 python 包并将其导入我的管道?
- java - 可在任何 Android 设备上工作的坐标
- javascript - Froala / PHP - 图片上传失败(出了点问题......)
- python - 考虑到2个不同范围子图中的单个颜色条,pcolor和contourf的颜色条有什么区别
- c# - C# 编译器不正确的异步,等待?