0
URLSearchParamsで配列を扱いたい
2023-08-04

URLのパラメータでid=1&id=2みたいな文字列を作りたい

URLSearchParamsのドキュメント

URLSearchParams - Web API | MDN

重複する検索パラメータの項で同じキーの値が複数ある場合、クエリ文字列からパースして値を取得する方法は載っていたがクエリ文字列を生成する方法は載っていなかった

普通に配列渡したらよしなにやってくれるかと思ったらそうはいかなかった

> ids = [1,2,3]
> search = new URLSearchParams({ids})
URLSearchParams { 'ids' => '1,2,3' }
> search.toString()
'ids=1%2C2%2C3'

カンマ区切りにされてしまうのね

参考

javascript - Passing array into URLSearchParams while consuming http call for get request - Stack Overflow

> ids = [1,2,3]
> search = new URLSearchParams(ids.map(s => ['id', s]))
URLSearchParams { 'id' => '1', 'id' => '2', 'id' => '3' }
> search.toString()
'id=1&id=2&id=3'

これで良いらしい

他のパラメータも含める場合

> ids = [1,2,3]
> search = new URLSearchParams(ids.map(s => ['id', s]).concat([['a', 'a']]))
URLSearchParams { 'id' => '1', 'id' => '2', 'id' => '3', 'a' => 'a' }
> search.toString()
'id=1&id=2&id=3&a=a'

勉強になりました

0

Profile

swfz
swfz
日々学んだことを残していく
Today I Learned
コード片置き場

Account

RSS

Powered by Pixela
© 2024. swfz