aeX*_*264 11 javascript url url-parameters node.js
我正在使用查询参数,并被介绍到URLSearchParams. 我用它来形成这种要查询的对象,
const x = {
a: 'hello World'
b: 23
c: ''
}
let params = new URLSearchParams(x);
console.log(params.toString()) // a=hello+World&b=23&c=
Run Code Online (Sandbox Code Playgroud)
在这里,我不想拥有那个c=,因为它很丑,而且我的 API 不需要那个。
所以,我想要这个结果a=hello+World&b=23(没有空的查询字符串)但是,我在 mdn 文档上找不到任何东西。
我该怎么做?
这样做不起作用,因为它似乎直接改变了params影响forEach:
const x = {
a: 'hello World',
b: '',
c: ''
};
let params = new URLSearchParams(x);
params.forEach((v, k) => { // never reaches `c`
console.log(k, ' => ', v)
if (v == '')
params.delete(k);
});
console.log(params.toString());Run Code Online (Sandbox Code Playgroud)
您可以遍历键值对并删除具有空值的键:
const x = {
a: 'hello World',
b: '',
c: ''
};
let params = new URLSearchParams(x);
let keysForDel = [];
params.forEach((v, k) => {
if (v == '')
keysForDel.push(k);
});
keysForDel.forEach(k => {
params.delete(k);
});
console.log(params.toString());Run Code Online (Sandbox Code Playgroud)
小智 7
我自己做的一个干净的方法如下(使用lodash):
import omitBy from 'lodash/omitBy';
import isEmpty from 'lodash/isEmpty';
const x = {
a: 'hello World'
b: 23
c: ''
}
const params = new URLSearchParams(omitBy(x, isEmpty));
// mixing other sets
const params = new URLSearchParams({
otherParam: 'foo',
...omitBy(x, isEmpty)
});Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4469 次 |
| 最近记录: |