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