如何从URLSearchParams获取大小?
我发现
Array.from(url.searchParams).length
这个答案在这里https://github.com/whatwg/url/issues/163
它最正确的答案?
最佳答案
TL; DR:这取决于您是否关心唯一键。
正常情况下,其中searchParams是 map (唯一键),可以正常工作:
const url = new URL("protocol://domain?query=value1&query1=value2&query2=value");
console.log(Array.from(url.searchParams).length);
// Output is 3
但是,当searchParams不是 map 时,您需要小心:
const url = new URL("protocol://domain?query=value1&query=value2&query2=value");
console.log(Array.from(url.searchParams).length);
// Output is still 3
在这种情况下,转换为数组时,该数组为
[["query", "value1"], ["query", "value2"], ["query2", "value"]]
。如果您希望searchParams成为 map ,则可能会造成困惑。在这种情况下,为了找到唯一键,您应该使用类似以下的方法来提取它们:
const url = new URL("protocol://domain?query=value1&query=value2&query2=value");
const searchParams = Array.from(url.searchParams);
const searchParamsUniqueKeys = [];
for (const p of searchParams) {
if (!searchParamsUniqueKeys.includes(p[0])) {
searchParamsUniqueKeys.push(p[0]);
}
}
console.log(searchParamsUniqueKeys.length);
// Output is 2