javascript - 用于合并/组合两个 URLSearchParams 的 Javascript 函数
问题描述
我想知道合并两个 URLSearchParams 的 Javascript 中最有效的代码是什么,但是其中一个具有更高的优先级,让我用两个例子来解释。
const oldParams = 'foo=one&coo=two'
const newParams = 'roo=three&moo=four'
urlCombine(oldParams, newParams)
返回foo=one&coo=two&roo=three&moo=four
到目前为止一切都很好,但是假设我们还想给予newParams
更高的优先级,以便如果key
两者都存在相同的情况,newParams
并且oldParams
返回值应该始终使用value
of newParams
,例如。
const oldParams = 'foo=one&coo=two'
const newParams = 'coo=three&foo=four'
urlCombine(oldParams, newParams)
返回foo=four&coo=three
解决方案
使用URLSearchParams将字符串解析为键值对,然后将它们组合起来。
const oldParams = 'foo=one&coo=two'
const newParams1 = 'roo=three&moo=four'
const newParams2 = 'coo=three&foo=four'
function urlCombine(a,b,overwrite=false){
a = new URLSearchParams(a);
const fn = overwrite ? a.set : a.append;
for(let [key, value] of new URLSearchParams(b)){
fn.call(a, key, value);
}
return a.toString();
}
console.log(urlCombine(oldParams, newParams1));
console.log(urlCombine(oldParams, newParams2, false));
console.log(urlCombine(oldParams, newParams2, true));
推荐阅读
- python - 为什么我的函数不断循环,我该如何解决?
- java - 如何使用jsp从表中检索数据?
- python - 图成一个子图matplotlib
- android - 有没有办法从 youtubeintents 检索订阅频道的数据?
- php - 调试MySql Gone away错误,随机获取多个休眠线程
- ssis - SSIS 导入 CSV 用引号分隔
- python - 程序员说“引发错误”是什么意思(例如,为什么要这样做)?
- android - 使用 AndroidX 运行检测测试时未找到测试
- c - 具有 2 个客户端的 UDP 服务器,如何为它们分配特定端口
- deployment - NixOS 中的 NixOS?