我需要了解这段代码。它是为我公司的前开发人员制作的,但我真的不太了解它是如何工作的......如果有人可以帮助我,我会贬低它。
var main= function(arr, fun) {
var i= 0,
max= arr.length,
array= [];
for (; i< max; i++) {
array.push(fun(arr[i]));
}
return array;
};
答案 0 :(得分:2)
它实际上是一个非常模糊的Array.prototype.map
实现。我个人建议:
function array_map(arr,callback) {
if( arr.map) return arr.map(callback);
for( var i=0, l=arr.length, ret = []; i<l; i++) {
ret[i] = callback(arr[i],i,arr);
}
return ret;
}
它使用浏览器的内置函数(如果存在),否则手动模拟它。
答案 1 :(得分:1)
如果您将“fun”这个参数视为函数名称,也许您可以理解它。在作为“fun”的输入参数运行后,你的代码只返回数组“arr”的结果。
如下所示:
var arr = [0, 1, 2];
function fun( arg ) {
return arg + 1;
}
在我看来,像这样调用你的代码:
main(arr, fun);
它应该返回:
[1, 2, 3]
当然,我没有检查它是否真的正确,你可以参加测试〜
祝你好运答案 2 :(得分:0)
var main= function(arr, fun) {
//intialing variables
var i= 0,
max= arr.length,
array= [];
//looping the variables
for (; i< max; i++) {
//push values in to array after using the function passed
array.push(fun(arr[i]));
}
return array;
};
//to test I have defined a function which adds 1
var res = main([1,2,3], function(val) {return val + 1});
alert(res);
答案 3 :(得分:0)
var main = function(arr, fun) {
var i = 0, //starting a loop through the array at 0
max = arr.length, //getting the number of items in the array
array= []; //declaring a new array
for (; i< max; i++) { //this is a loop that goes through all the values in the array
array.push(fun(arr[i])); //this adds the values to the new array, using the function 'fun' to change the value
}
return array; //this returns the array
};
答案 4 :(得分:0)
它通过将函数arr
的前一个数组fun
的结果放入新数组中来创建一个新数组。
例如,如果fun
得到数字的平方且arr
为[1,2,3],main
将返回[1,4,9]
答案 5 :(得分:0)
它创建了一个名为main
的函数。此函数将数组和处理函数fun
作为参数。它将数组的每个元素提供给fun
函数,并将此调用的结果(fun(arr[i]
))添加到新的array
。例如,以下main函数的使用返回数组{2, 3, 4, 5}
。
main({1, 2, 3, 4}, function(item) {
return item + 1;
});
答案 6 :(得分:0)
让我们分开代码:
// will create a function which accepts 2 parameters
var main= function(arr, fun) {
//variable declaration
var i= 0,
max= arr.length, // get array length
array= []; // create new array
// add function value (fun(arr[i])) to an array. arr is a parameter which is also an array
// fun(arr[i]) is a callback function which accepts 1 parameter (array one)
for (; i< max; i++) {
array.push(fun(arr[i]));
}
// return the new array
return array;
};
答案 7 :(得分:0)
你需要一个策略来处理不熟悉的结构。在Stackoverflow上提出一个全面的问题可能在短期内有所帮助,但可能不会加强你对“肌肉”的解释。
我建议首先确保您可以在调试器中运行代码,并在函数的第一行代码中设置断点。然后使用调试器回答诸如以下问题:
1)。什么进来?参数的类型有哪些。
2)。返回什么
然后你会注意到乐趣实际上是一种功能。那你的函数从哪里调用?什么函数作为第二个参数传递。
然后你可能想知道一些你以前没见过的构造,例如array.push()的构造。所以快速谷歌回答说。
突然你理解并锻炼了你的“肌肉”。如果你仍然感到困惑,你可能会在这里问一个更好,更准确的问题。