使用qs.stringify构造URL时移除空/Null值参数的方法求助
解决qs.stringify保留非空非Null参数的问题
嘿,刚好qs库本身就提供了直接解决这个问题的配置,不用自己额外写复杂的过滤逻辑~
方法1:仅跳过Null值
如果你只需要移除值为null的参数,直接给qs.stringify加上skipNulls: true配置项就可以了:
const url = `/user?${qs.stringify({ name, age }, { skipNulls: true })}`;
当age为null时,这个参数就不会出现在生成的查询字符串里,最终你会得到localhost:3000/user?name=john这样的结果。
方法2:同时跳过Null和空字符串
如果你的场景里还需要过滤值为空字符串''的参数,可以用filter选项来自定义过滤规则:
const url = `/user?${qs.stringify({ name, age }, { filter: (prefix, value) => { // 只保留非Null且非空字符串的参数 return value !== null && value !== '' ? value : undefined; } })}`;
这个filter函数会遍历每个参数的键值对,返回undefined的参数就会被qs自动忽略,完美匹配你的需求。
补充说明
skipNulls是qs专门为跳过Null值设计的快捷配置,代码更简洁;filter选项则更灵活,你可以根据自己的需求扩展过滤逻辑(比如过滤undefined、空数组等)。
内容的提问来源于stack exchange,提问作者scriobh
相关产品推荐
相关产品推荐

