如何无需循环将JavaScript对象设为URL的searchParams
批量设置URL的searchParams问题
假设有如下数据:
let data = { a: 1, b: 2, c: 3}
现有一个URL实例:
const url = new URL('https://www.mywebsite.com')
希望将该对象的所有键值对设置为该URL的searchParams,无需逐个调用set或append方法,直接批量替换现有查询参数。尝试过以下方法但均无效:
const params = new URLSearchParams(data) url.searchParams = params
或
url.searchParams.set(data) // 或.append(data)
不想通过Object.entries(data)配合for of循环实现,请问是否有简便方法批量将对象键值对设为URL的searchParams,最终期望结果为:
url.toString() // https://www.mywebsite.com/?a=1&b=2&c=3
解决方案
直接给URL的search属性赋值URLSearchParams实例即可,这是最简便的批量替换方式:
url.search = new URLSearchParams(data);
原理是URL的search属性支持接收URLSearchParams对象,浏览器会自动将其序列化为符合要求的查询字符串,同时完全替换掉原有的所有查询参数,正好满足需求。
内容的提问来源于stack exchange,提问作者Zack Plauché
相关产品推荐
相关产品推荐

