首页 > 解决方案 > 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'
]

我确定我在这方面还差得很远,但正在寻找一些关于该做什么的指示。

标签: javascript

解决方案


您可以为替换字符串取一个对象并替换所有找到的值。

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);


推荐阅读