我正在进行一些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或其他地方链接到一个页面作为答案,因为我想学习如何做到这一点。
答案 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()
属性来执行该功能。请尝试以下方法:
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;