JavaScript:如何在数组中运行作为参数传递的函数?

时间:2018-01-04 00:17:11

标签: javascript

我正在进行一些JavaScript练习。其中一个使用数组作为参数。

解决练习的功能应该通过输入数组,测试进入的类型,并将项添加到要返回的新数组中。 输入数组可以包含各种类型,包括函数。 如果某个项是函数,则需要调用它/ run而不是将其添加到新数组中。结果应该添加到要返回的新数组中。

我可以使用" typeof"来测试输入数组中的函数。没问题。 如何调用/运行该功能?

因此,这是一个输入数组的示例,它具有作为项的函数:

flattenArray([1, '2', 3, 4, function () { return 'five'; }]);

返回的结果数组应为:

[1, '2', 3, 4, 'five']

这是我的代码部分,我正在测试循环中通过输入数组的对象(名为" array")。

var arrReturn = [];

for(var i = 0; i < array.length; i++){
// Test for a function.
// Run/call the function.
    if(typeof array[i] === "function"){
        var functionResult = array[i];  // This is not correct. What should go here? 
        arrReturn.push(functionResult);
    }
}

我很乐意在MDN或其他地方链接到一个页面作为答案,因为我想学习如何做到这一点。

2 个答案:

答案 0 :(得分:4)

您只需要调用该函数:

// Add () to call, just like you would any other function. 
var functionResult = array[i]();

如果将其分解为两个步骤可能会更有意义:

var func = array[i];
var result = func(); // Calling

答案 1 :(得分:2)

通过检查typeof内的map()属性来执行该功能。请尝试以下方法:

&#13;
&#13;
var arr = [1, '2', 3, 4, function () { return 'five'; }];

var arrReturn = [];

arrReturn = arr.map(function(item){
  if(typeof item === 'function'){
    item = item();
  }
  return item;
});

console.log(arrReturn);
&#13;
&#13;
&#13;