从 URL 中删除重复的 GET 参数

Kas*_*deh 0 javascript query-string

我想用正则表达式删除重复的单词

let url = "/courses?category=programming&filter=free&filter=free"
const az = url.replace(/(\b\S.+\b)(?=.*\1)/g, "").trim();
console.log(az) // /courses?category=programmingfree&filter=free
Run Code Online (Sandbox Code Playgroud)

我想要得到/courses?category=programming&filter=free

Spe*_*ric 5

您可以使用URLSearchParams构造函数来解析 URL 参数,然后Object.fromEntries将其转换为对象(并删除重复的键),然后解析回对象URLSearchParams,您可以从中调用toString()以获取结果:

let url = "/courses?category=programming&filter=free&filter=free"
let [path, params] = url.split("?");
let result = path + '?' + new URLSearchParams(Object.fromEntries(new URLSearchParams(params))).toString()
console.log(result)
Run Code Online (Sandbox Code Playgroud)