我想传递字符串数组沿着键和值到同一个参数名作为查询参数。示例查询参数列表:
const params = { id: '002', sequence: [{ s1: 'a' }, { s2: 'b' }, { s3: 'c' }], limit: 3 };
URL应该是这样的。https://localhost:3000?id=002&sequence=s1=a&sequence=s2=b&sequence=s3=c如何在这里添加逻辑?有什么建议吗
https://localhost:3000?id=002&sequence=s1=a&sequence=s2=b&sequence=s3=c
xqnpmsa81#
为了做到这一点,首先需要迭代params对象,然后对于object中的array,您也必须有条件地迭代它,并将每个数组元素作为具有相同键的单独查询参数追加。对于对象中的非数组项,将它们作为常规查询参数追加,然后在删除前导&后返回url。您可以创建一个函数将object参数转换为URL字符串。代码如下所示:
params
object
array
&
const params = { id: '002', sequence: [{ s1: 'a' }, { s2: 'b' }, { s3: 'c' }], limit: 3 }; function convertParamsToURL(params) { let url = ''; for (const key in params) { if (Array.isArray(params[key])) { params[key].forEach((item) => { for (const itemKey in item) { url += `&${key}=${itemKey}=${item[itemKey]}`; } }); } else { url += `&${key}=${params[key]}`; } } return url.substring(1); } const baseUrl = 'https://localhost:3000'; const queryParam = convertParamsToURL(params); const finalUrl = `${baseUrl}?${queryParam}`; console.log(finalUrl)
1条答案
按热度按时间xqnpmsa81#
为了做到这一点,首先需要迭代
params
对象,然后对于object
中的array
,您也必须有条件地迭代它,并将每个数组元素作为具有相同键的单独查询参数追加。对于对象中的非数组项,将它们作为常规查询参数追加,然后在删除前导&
后返回url。您可以创建一个函数将
object
参数转换为URL字符串。代码如下所示: