如何传递值数组以使用pickBy方法进行过滤

时间:2019-04-01 09:12:37

标签: javascript node.js lodash

我在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必须为数字。 我想实现的目标是,只要传递任何值,它就会起作用。

1 个答案:

答案 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中尝试过此操作。也许浏览器中有东西。