gpt4 book ai didi

javascript - 如何根据 JSON 属性名称替换字符串值

转载 作者:行者123 更新时间:2023-12-03 23:34:34 25 4
gpt4 key购买 nike

我正在尝试用对象中的可比较 jSON 属性替换字符串中的值。

var value = "/sessions/:sessionId/events/:id";
var result = replace(value, { sessionId : 1 , id : 23 });

// result : "/sessions/1/events/23"
console.log(result);

JavaScript 是否可行(我敢肯定)?不确定执行此操作的最有效方法以及当模板字符串中的所有值都不匹配时如何处理它。

提前致谢。

更新(解决方案)

var url = function (template, parameters) {

var extra = [];

for (param in parameters) {
if (value.indexOf(param) < 0) {
extra.push(param + '=' + parameters[param]);
}
}

var result = template.replace(/:(\w+)/g, function (substring, match) {
var routeValue = parameters[match];
if (!routeValue) {
throw "missing route value for " + match + ' in "' + template +'"';
}
return routeValue;
});

if (result.indexOf("/:") > 0) {
throw "not all route values were matched";
}

return (extra.length === 0) ? result : result + "?" + extra.join("&");
};

var value = "/sessions/:sessionId/events/:id";
var data = {
sessionId: 1,
id: 23,
term: "butter"
};

// result : /sessions/1/events/21?term=butter
console.log(url(value, data));

最佳答案

正则表达式在这里工作得很好。

var value = "/sessions/:sessionId/events/:id";
var obj = { sessionId : 1 , id : 23 };

var result = value.replace(/:(\w+)(\/|\b)/g, function(substring, match, nextMatch){
return obj[match] + nextMatch;
});

关于javascript - 如何根据 JSON 属性名称替换字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17838370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com