Javascript 如何仅在参数为真时传递参数?

Javascript 如何仅在参数为真时传递参数?,javascript,Javascript,我有这个功能: export function filterClauseJld(operator: Operator, value: QueryPart | QueryPart[]): Clause { return { '@type': 'clause', 'op': operator, ...assignIf(operator === Operator.Not, { value, }),

我有这个功能:

export function filterClauseJld(operator: Operator, value: QueryPart | QueryPart[]): Clause {
    return {
        '@type': 'clause',
        'op': operator,
        ...assignIf(operator === Operator.Not, {
            value,
        }),
        ...assignIf(operator !== Operator.Not, {
            values: value,
        }),
    }
}
现在我想这样传递值:

但是,我传递的值数组中任何传递的项都可能是未定义的。如果值不是未定义的,那么是否有一种好方法可以只传递该值,而不执行以下操作:


    if (!someValue && !anotherValue) {
      filterClauseJld(Operator.And, [someotherValue])
    } else if (!someValue && !someotherValue) {
      filterClauseJld(Operator.And, [another Value])
    }...

您应该尝试筛选阵列:

var filtered = array.filter(function (val) {
  return val != undefined;
});

您可以删除所有未定义的值,然后将其传递给函数。

您应该尝试筛选数组:

var filtered = array.filter(function (val) {
  return val != undefined;
});

您可以去掉所有未定义的值,然后将其传递给您的函数。

可能是这样的:

var args = [
    a ?? undefined,
    b ?? undefined,
    c ?? undefined,
].filter(arg => !!arg || arg === null);

也许是这样的:

var args = [
    a ?? undefined,
    b ?? undefined,
    c ?? undefined,
].filter(arg => !!arg || arg === null);

一个简单的解决方案是使用|运算符

下面是一个例子:

const a = undefined;
const b = 10;
const c = 20;

function sum(a, b){
    return a + b;
}

sum(a | c, b); // 30
这意味着如果a未定义,则使用c代替它。
您可以阅读有关逻辑赋值运算符的更多信息

一个简单的解决方案是您可以使用|运算符

下面是一个例子:

const a = undefined;
const b = 10;
const c = 20;

function sum(a, b){
    return a + b;
}

sum(a | c, b); // 30
这意味着如果a未定义,则使用c代替它。 您可以阅读有关逻辑赋值运算符的更多信息

在使用typeof传递函数之前,从数组中删除未定义的值,它不会删除一些有效值,如0等:

在使用typeof传入函数之前,从数组中删除未定义的值,它不会删除一些有效值,如0等:


如果我没有弄错的话,没有提供的参数最终将是未定义的,所以您最好传入未定义的参数。但我不确定这一点。如果我没有弄错的话,没有提供的参数最终将是未定义的,所以您最好传入未定义的。但我对此不确定。/!\由松散的平等警察键入强制警报:/!\/!\由松散的平等警察键入强制警报:/\