例如,我有一个 var
a
。如果 a
为 1,我想使用一个函数,如果 a 是其他值,我想使用另一个函数而不重用一堆代码。这是我现在有的类似的东西:
if (a == 1) {
return this.data.some((c) => {...});
} else {
return this.data.every((c) => {...});
}
每个省略号中都有相同的数据,我不想再次重复。有没有什么捷径可以根据
some
将 every
换成 if (a == 1)
?
我尝试了正则三元表达式,但语法对于函数不正确,仅对于变量不正确。
您可以在上面定义匿名函数,然后在三元中使用它。
const myFunc = (c) => { ... };
return a == 0 ? this.data.some(myFunc) : this.data.every(myFunc);
从技术上讲,没有什么可以阻止您使用两个相同的匿名函数创建三元,也许您在尝试时遇到了另一个问题?这应该有效:
return a == 0 ? this.data.some((c) => { ... }) : this.data.every((c) => { ... })
你可以这样做:
const someOrEvery = (a == 1 ? [].some : [].every);
return bar.call(this.data, (c) => {...});
使用
call
,您可以根据上面的三元组将参数传递给 some()
或 every()