我有一个.js文件,其配置结构如下。
genGetLocations:{
data_url:'restaurants/{var1}/tables/{var2},
}
这是一个例子。有些配置可能具有data_url,其中的data_url具有两个以上的动态变量。然后在.vue文件中,在获取到data_url之后,我将有两个ID,必须将其替换为var1和var2,这样我才能拥有最终的REST API URL来提出请求。
问题:我不知道每个data_url将有多少个变量以及它们将在data_url中放置的位置。因此,在.vue文件中,当我拥有ID时,我想在data_url中替换它们。
答案 0 :(得分:2)
根据ID是数组还是对象,可以执行以下操作之一:
const data = 'restaurants/{var1}/tables/{var2}';
const idsArray = [101, 102];
console.log(
data.replace(/\{var(\d+)\}/g, (substr, idx) => idsArray[parseInt(idx) - 1])
);
const data = 'restaurants/{var1}/tables/{var2}';
const idsObj = {
var1: 101,
var2: 102
};
console.log(
data.replace(/\{(var\d+)\}/g, (substr, key) => idsObj[key])
);
如果您希望键是任意的:
const data = 'restaurants/{foo}/tables/{bar}';
const idsObj = {
foo: 101,
bar: 102
};
console.log(
data.replace(/\{(.*?)\}/g, (substr, key) => idsObj[key])
);
答案 1 :(得分:1)
这正在寻找URL中的每个{}。因此可能是{var1}
,{string2}
左右。
尝试一下:
var info = {"genGetLocations":{
"data_url" : "restaurants/{var1}/tables/{var2}"
}};
var ids = ["test1", "test2", "test3"];
var regexp = /\{.*?\}/g;
var results = info.genGetLocations.data_url.match(regexp);
var replacedString = info.genGetLocations.data_url;
results.forEach(function(result, index) {
replacedString = replacedString.replace(new RegExp(result,"g"), ids[index]);
});
console.log(replacedString);
答案 2 :(得分:0)
也许您可以尝试一下
sleep ( int $seconds ) : int