我在pickBy函数中将数组作为参数传递
return fetch(API_BASE + url + (params ? '?' + stringify(pickBy(params, v=>v===false||!!v)) : ''), {
method: 'GET',
headers,
credentials: 'include'
}).then(resp=>{
authGuard(resp);
return resp;
});
我的params对象是
currencyId: [12,44]
dueDateEnd: null
dueDateStart: null
exceptionTypeIds: (2) ["Contract updates/correction WIP", "Closed Contract"]
现在每当我仅传递一个exceptionTypeIds时,它就会起作用,但是当我传递两个值时,会抛出异常,那就是exceptionTypeIds必须为字符串,CurrencyId必须为数字。 我想实现的目标是,只要传递任何值,它就会起作用。
答案 0 :(得分:0)
那很奇怪。我只是用lodash 4.14.120尝试过,其行为符合预期:
const params = {
currencyId: [12, 44],
dueDateEnd: null,
dueDateStart: null,
exceptionTypeIds: ["Contract updates/correction WIP", "Closed contract"]
}
console.log(_.pickBy(params, v => v === false || !!v))
返回
{
currencyId: [ 12, 44 ],
exceptionTypeIds: [ 'Contract updates/correction WIP', 'Closed contract' ]
}
即使只有一个exceptionTypeId或一个空数组:也没有错误。
我在Node.js REPL中尝试过此操作。也许浏览器中有东西。