我在两个不同的文件中有一些函数,它们都通过函数调用链接在一起,如下所示
文件1:
function getFunction(func){
}
文件2:
function Numbers(one, two) {
return (one*two);
}
var func = getFunction(Numbers);
这些被称为:
func(input_array);
我的数组的值为1,3,5,7,9
,我需要func(input_array)
才能返回3,15,35,63,9
(最后一个值循环回第一个值)
基本上我要做的是让getFunction返回一个函数,以便计算这些值。我遇到了麻烦,因为我无法解决发送和返回功能的问题。如果未将数组发送到函数中,我不知道如何访问该数组。如果我需要澄清任何事情,请告诉我。
答案 0 :(得分:1)
function getFunction(callback) {
return function(array) {
return array.map(function(cur, index) {
return callback(cur, array[(index+1) % array.length]);
});
};
}
getFunction
返回callback
参数的闭包,该参数是您要调用的函数。闭包接收array
参数,并使用array.map
在数组循环中调用回调。 %
模数运算符执行您想要的环绕。
另一种更清晰的写法是:
function getFunction(callback) {
return function(array) {
var result = [];
for (var i = 0; i < array.length; i++) {
j = (i+1) % array.length; // Next index, wrapping around
result.push(callback(array[i], array[j]));
}
return result;
};
}
var func = getFunction(Numbers);
console.log(func([1,3,5,7,9])); // Logs [3,15,35,63,9]
答案 1 :(得分:0)
这里是简单的函数,返回你需要的东西
function Numbers(x) {
output_array=[];
for(i=0;i<x.length;i++){
if(x[i+1]==undefined){
output_array.push(x[i]);
}
else{
output_array.push(x[i]*x[i+1]);
}
}
return output_array;
}
var input_array=[1,3,5,7];
var num = Numbers(input_array);
console.log(num);
或者如果你需要它的方式调用另一个函数 而不是返回结果使用此
function getFunction(Numbers,input_array){
return Numbers(input_array);
}
function Numbers(x) {
output_array=[];
for(i=0;i<x.length;i++){
if(x[i+1]==undefined){
output_array.push(x[i]);
}
else{
output_array.push(x[i]*x[i+1]);
}
}
return output_array;
}
var input_array=[1,3,5,7];
var num = getFunction(Numbers,input_array);
console.log(num);