javascript - Javascript循环替换字符串中的数据
问题描述
我有一小段代码正在尝试替换。有两个数据对象。一个是包含 a 的 URL 列表,{variable}
另一个是这些变量的替换值的对象。
我已经创建了一些代码来尝试让它工作,但我认为可能有一种更有效的方法来处理这个问题。
// Content we will look through and replace variables in
let urls = [
'http://www.example.com/{var1}/{var2}',
'http://www.example.com/{var1}/{var4}',
];
// Data used for the replacement
let variables = [{
variable: 'var1',
value: '123'
},
{
variable: 'var2',
value: '456'
},
{
variable: 'var4',
value: '789'
}]
// Will hold the final URLs
let finalURLs = [];
// Loop over all URLS
for (let index = 0; index < urls.length; ++index) {
// Loop over all variables
for (let d = 0; d < data.length; ++d) {
// Set the replaced URL
let u = urls[index].replace('{' + data[d].variable + '}', data[d].value);
finalURLs.push(u);
}
}
// Desired output
finalURLs = [
'http://www.example.com/123/456',
'http://www.example.com/123/789'
]
我确定我在这方面还差得很远,但正在寻找一些关于该做什么的指示。
解决方案
您可以为替换字符串取一个对象并替换所有找到的值。
var urls = ['http://www.example.com/{var1}/{var2}', 'http://www.example.com/{var1}/{var4}'],
vars = { var1: '123', var2: '456', var4: '789' },
result = urls.map(s => s.replace(/\{([^}]*?)\}/g, (_, v) => v in vars ? vars[v] : v));
console.log(result);
推荐阅读
- node.js - Heroku 上的 MERN 不能跨浏览器工作
- android - RecyclerView GridLayoutManager - 交替 3 和 2 列行
- php - 如何使用 PHP 预览图像
- iis - 尝试其他建议的解决方案后无法启动 Windows Process Activation Service
- webpack - Webpack 配置扩展
- php - Laravel 5.6 - 尝试检索图像时权限被拒绝
- c++ - 迭代并非所有元素都应具有值的元素
- vba - Excel VBA - 根据另一列的数据使用偏移量获取单元格值
- vba - 在经典asp中连接到数据库
- regex - 替换模式并在数字周围添加方括号