首页 > 解决方案 > 用于合并/组合两个 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返回值应该始终使用valueof newParams,例如。

const oldParams = 'foo=one&coo=two'
const newParams = 'coo=three&foo=four'

urlCombine(oldParams, newParams)返回foo=four&coo=three

标签: javascriptreactjs

解决方案


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


推荐阅读