Javascript 应用内置的JS操作符
假设我想使用Javascript 应用内置的JS操作符,javascript,Javascript,假设我想使用reduce添加一系列数字: [1,2,3].reduce((all, current) => all + current, 0) 是否有任何内置(我知道我可以编写一个辅助函数来实现这一点)方法将+运算符作为适用函数传递?例如: [1,2,3].reduce(+, 0) 我知道上面的内容是无效的,但我希望它能证明我想要实现的目标。没有类似的内置函数。 这完全是一种黑客行为,可能会取代本机的reduce功能 Array.prototype.reduce=函数(运算符,初始值
reduce
添加一系列数字:
[1,2,3].reduce((all, current) => all + current, 0)
是否有任何内置(我知道我可以编写一个辅助函数来实现这一点)方法将+
运算符作为适用函数传递?例如:
[1,2,3].reduce(+, 0)
我知道上面的内容是无效的,但我希望它能证明我想要实现的目标。没有类似的内置函数。 这完全是一种黑客行为,可能会取代本机的
reduce
功能
Array.prototype.reduce=函数(运算符,初始值){
//假设运算符始终为=“+”
//您需要实现减法、乘法等的版本,可能使用开关盒
var sum=初始值;
this.forEach(elem=>{sum+=elem});
回报金额;
}
log([1,2,3,4].reduce(“+”,0))
// 10
log([1,2,3,4].reduce(“+”,10))
//20
没有类似的内置功能。
这完全是一种黑客行为,可能会取代本机的reduce
功能
Array.prototype.reduce=函数(运算符,初始值){
//假设运算符始终为=“+”
//您需要实现减法、乘法等的版本,可能使用开关盒
var sum=初始值;
this.forEach(elem=>{sum+=elem});
回报金额;
}
log([1,2,3,4].reduce(“+”,0))
// 10
log([1,2,3,4].reduce(“+”,10))
//20
不,不存在此类符号。但正如你所指出的,你可以自己写:
const Operator = { plus: (a, b) => a+b };
//...reduce(Operator.plus, 0)
你的问题的答案很简单:不。不,不存在这样的符号。但正如你所指出的,你可以自己写:
const Operator = { plus: (a, b) => a+b };
//...reduce(Operator.plus, 0)
const op = k => {
"+": (a,b) => a + b,
"-": (a,b) => a - b,
"/": (a,b) => a / b,
"*": (a,b) => a * b
}[k];
你的问题的答案很简单:不
const op = k => {
"+": (a,b) => a + b,
"-": (a,b) => a - b,
"/": (a,b) => a / b,
"*": (a,b) => a * b
}[k];
因此,您可以:
[1,2,3].reduce(op("+"))
reduce([1,2,3,4],"+");
(此处不需要startvalue)
Reduce可以包装在另一个函数中,以进一步缩短此功能:
const reduce = (arr, o,s) => arr.reduce(typeof o === " function" ? o : op(o), s);
因此,您可以:
[1,2,3].reduce(op("+"))
reduce([1,2,3,4],"+");
因此,您可以:
[1,2,3].reduce(op("+"))
reduce([1,2,3,4],"+");
(此处不需要startvalue)
Reduce可以包装在另一个函数中,以进一步缩短此功能:
const reduce = (arr, o,s) => arr.reduce(typeof o === " function" ? o : op(o), s);
因此,您可以:
[1,2,3].reduce(op("+"))
reduce([1,2,3,4],"+");
这是为使用Lodash的人准备的 您可以使用可用的
.multiply
、.add
、.subtract
和.divide
函数和数组。reduce
以下是一个例子:
function calculate(operand, elements) {
return _.first(elements.reduce((acc, cur) => _.chunk(acc.concat(cur), 2).map(c => _[operand].apply(null, c)), []));
}
// Then
calculate('add', [1,2,3,4,5]); // 15
这是为使用Lodash的人准备的 您可以使用可用的
.multiply
、.add
、.subtract
和.divide
函数和数组。reduce
以下是一个例子:
function calculate(operand, elements) {
return _.first(elements.reduce((acc, cur) => _.chunk(acc.concat(cur), 2).map(c => _[operand].apply(null, c)), []));
}
// Then
calculate('add', [1,2,3,4,5]); // 15
您可能希望编写不同的操作数函数并传递这些函数。您可能希望看到这样的库,它们允许您编写更多的函数代码。例如,您在中已经有了所需的。您可能希望编写不同的操作数函数并传递这些函数。您可能希望查看库,例如,它们允许您编写更多的函数代码。例如,您在中已经有了您所需要的。我认为这根本不能回答问题,修改原型以及使用字符串和开关盒绝对不是内置的。那么,不!!这个问题的答案是什么?如果你有正确的答案,请分享。我很乐意删除它。也许javascript不是Pythontanks,但我正在寻找一种内置的方法来实现这一点,而不需要修改
原型
或编写额外的函数。如果这个wan不清楚,很抱歉。我认为它根本不能回答这个问题,修改原型、使用字符串和开关盒绝对不是内置的。那么,不!!这个问题的答案是什么?如果你有正确的答案,请分享。我很乐意删除它。也许javascript不是Pythontanks,但我正在寻找一种内置的方法来实现这一点,而不需要修改原型
或编写额外的函数。对不起,如果这个不清楚的话。