• iterable {Iterable} 元素是键值对的迭代对象。

    以一种类似于 [Map] 的构造函数的迭代映射方式实例化一个新的 URLSearchParams 对象。 iterable 可以是一个 Array 或者任何迭代对象。 这就意味着 iterable 能够是另一个 URLSearchParams,这种情况下,构造函数将简单地根据提供的 URLSearchParams 创建一个克隆 URLSearchParamsiterable 的元素是键值对,并且其本身也可以是任何迭代对象。

    允许重复的键。

    1. let params;
    2. // 使用数组。
    3. params = new URLSearchParams([
    4. ['user', 'abc'],
    5. ['query', 'first'],
    6. ['query', 'second']
    7. ]);
    8. console.log(params.toString());
    9. // 打印 'user=abc&query=first&query=second'
    10. // 使用 Map 对象。
    11. const map = new Map();
    12. map.set('user', 'abc');
    13. map.set('query', 'xyz');
    14. params = new URLSearchParams(map);
    15. console.log(params.toString());
    16. // 打印 'user=abc&query=xyz'
    17. // 使用 generator 函数。
    18. function* getQueryPairs() {
    19. yield ['user', 'abc'];
    20. yield ['query', 'first'];
    21. yield ['query', 'second'];
    22. }
    23. params = new URLSearchParams(getQueryPairs());
    24. console.log(params.toString());
    25. // 打印 'user=abc&query=first&query=second'
    26. // 每个键值对必须有两个元素。
    27. new URLSearchParams([
    28. ['user', 'abc', 'error']
    29. ]);
    30. // 抛出 TypeError [ERR_INVALID_TUPLE]:
    31. // Each query pair must be an iterable [name, value] tuple