Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 应用内置的JS操作符_Javascript - Fatal编程技术网

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,但我正在寻找一种内置的方法来实现这一点,而不需要修改
原型
或编写额外的函数。对不起,如果这个不清楚的话。