如何获取查询字符串参数

使用场景:查询字符串的拼凑成员过多
// 参数对象
const paramObj = {
    attrA: "test",
    attrB: 10,
    attrC: ["a","b","c"]
};
// 查询字符串参数
let queryStr = "";
获取查询字符串(JS版)
// 情况一: 无数组
Object.keys(paramObj).forEach(attr => {
    let value = paramObj[attr];
    queryStr = queryStr + (value ? ((queryStr ? "&" : "") + attr + "=" + value) : "");
});

// 情况二: 有数组
Object.keys(paramObj).forEach(attr => {
    let value = paramObj[attr];
    const isArray = Array.isArray(value);
    if (!value || (isArray && !value.length)) return ;
    queryStr = queryStr + (queryStr ? "&" : "") + attr + "=" + (isArray ? value.join("&" + attr + "="): value);
});
获取查询字符串(TS版)
//属性类型
type attrsModel = "attrA" | "attrB" | "attrC" 

// 情况一: 无数组
Object.keys(paramObj).forEach(attr => {
    let value = paramObj[attr as attrsModel];
    queryStr = queryStr + (value ? ((queryStr ? "&" : "") + attr + "=" + value) : "");
});

// 情况二: 有数组
Object.keys(paramObj).forEach(attr => {
    let value = paramObj[attr as attrsModel];
    const isArray = Array.isArray(value);
    if (!value || (isArray && !(value as any[]).length)) return ;
    queryStr = queryStr + (queryStr ? "&" : "") + attr + "=" + (isArray ? (value as any[]).join("&" + attr + "="): value);
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值