我的问题最好以一个例子来说明。
有没有办法使用像
这样的语法array.reduce(and)
而不是
array.reduce((a, b) => a && b)
在Javascript中?
类似的问题适用于其他二元运算符,例如|| + - *
和许多其他运算符。 !
运算符存在类似问题,例如array.map(not)
。
修改
道歉,如果不够清楚的话。我想询问JS是否为所提到的运算符提供了实际的内置别名,就像其他一些语言一样。我很清楚我可以定义自己的功能来实现这一目标。
答案 0 :(得分:2)
实际上,是的 - 它们被称为功能。 : - )
const and = (a, b) => a && b;
let array = [true, false, true];
console.log(array.reduce(and)); // false
array = [true, true, true];
console.log(array.reduce(and)); // true
我在那里使用过箭头功能,但它可以是任何一种功能。
JavaScript没有任何其他方法,但函数可以很好地完成工作,为常见操作提供可重用的语义。
我的意思是询问JS是否为所提到的运算符提供了实际的内置别名,就像其他一些语言一样。
否 - 但是您展示的代码无论如何都不会使用别名。别名看起来像这样:array.reduce((a, b) => a and b)
答案 1 :(得分:2)
具有内置函数等价物的唯一二元运算符是**
(Math.pow
)和in
(Reflect.has
)。
有关array.reduce(and, true)
和array.reduce(or, false)
的具体说明,您可以将every
和some
与身份功能一起用作回调,或Boolean
使用内置功能。
答案 2 :(得分:1)
实际上&&
和||
只有两种方法,使用Array#every
或Array#some
和Boolean
作为回调。
对于所有其他的活动,你需要一个自己的功能。
function checkAnd(array) {
return array.every(Boolean);
}
function checkOr(array) {
return array.some(Boolean);
}
console.log(checkAnd([true, true, true]));
console.log(checkAnd([true, false, true]));
console.log(checkAnd([false, false, false]));
console.log(checkOr([true, true, true]));
console.log(checkOr([true, false, true]));
console.log(checkOr([false, false, false]));

答案 3 :(得分:0)
您可以定义功能:
apt install python2-pip