Javascript 减少功能不工作
Javascript Reduce Function Not working
我正在尝试使用高阶函数,试图成为更好的 javascript 开发人员。
我从下面的代码中得到的错误是 TypeError: myArray.reduce is not a function
我发誓我遵循了正确的设计模式。
function myFunction(myArray) {
return myArray.reduce((prev, curr) => prev * curr);
}
var myArray = [3, 2, 3]
var myObject = myFunction.apply(myObject, myArray); // Will each element in array be multiplied?
.call
将传入每个对象并将它们直接传递给函数,而 .apply
将采用参数数组并将它们作为每个单独的变量传入。
你可以看到下面的效果,用这个简单的脚本:
function myFunction() {
console.log(arguments);
}
var myArray = [3, 2, 3];
myFunction.call(null, myArray);
/*
Will echo out {
"0": [
3,
2,
3
]}
The first variable will contain the entire array
*/
myFunction.apply(null, myArray);
/*
Will echo out {
"0": 3,
"1": 2,
"2": 3
}
The first variable will be 3, the second 2, and the third 3
*/
而不是使用
var myObject = myFunction.apply(myObject, myArray);
使用
var myObject = myFunction.call(myObject, myArray);
因为 function.prototype.apply 方法将数组的每个项目作为参数。 myArray 参数变为 3、2、3,因此它的行为就像您的函数采用 3 个参数一样。
我正在尝试使用高阶函数,试图成为更好的 javascript 开发人员。
我从下面的代码中得到的错误是 TypeError: myArray.reduce is not a function
我发誓我遵循了正确的设计模式。
function myFunction(myArray) {
return myArray.reduce((prev, curr) => prev * curr);
}
var myArray = [3, 2, 3]
var myObject = myFunction.apply(myObject, myArray); // Will each element in array be multiplied?
.call
将传入每个对象并将它们直接传递给函数,而 .apply
将采用参数数组并将它们作为每个单独的变量传入。
你可以看到下面的效果,用这个简单的脚本:
function myFunction() {
console.log(arguments);
}
var myArray = [3, 2, 3];
myFunction.call(null, myArray);
/*
Will echo out {
"0": [
3,
2,
3
]}
The first variable will contain the entire array
*/
myFunction.apply(null, myArray);
/*
Will echo out {
"0": 3,
"1": 2,
"2": 3
}
The first variable will be 3, the second 2, and the third 3
*/
而不是使用
var myObject = myFunction.apply(myObject, myArray);
使用
var myObject = myFunction.call(myObject, myArray);
因为 function.prototype.apply 方法将数组的每个项目作为参数。 myArray 参数变为 3、2、3,因此它的行为就像您的函数采用 3 个参数一样。