NodeJS 如何在Vue.js中传递一个字符串数组作为具有相同参数名查询参数?

b5lpy0ml  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(174)

我想传递字符串数组沿着键和值到同一个参数名作为查询参数。
示例查询参数列表:

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
如何在这里添加逻辑?有什么建议吗

xqnpmsa8

xqnpmsa81#

为了做到这一点,首先需要迭代params对象,然后对于object中的array,您也必须有条件地迭代它,并将每个数组元素作为具有相同键的单独查询参数追加。对于对象中的非数组项,将它们作为常规查询参数追加,然后在删除前导&后返回url。
您可以创建一个函数将object参数转换为URL字符串。代码如下所示:

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)

相关问题