我需要理解这段代码。它是为我公司的前开发人员制作的,但我真的不太了解它是如何工作的……如果有人可以帮助我,我会很感激。
var main= function(arr, fun) {
var i= 0,
max= arr.length,
array= [];
for (; i< max; i++) {
array.push(fun(arr[i]));
}
return array;
};
我需要理解这段代码。它是为我公司的前开发人员制作的,但我真的不太了解它是如何工作的……如果有人可以帮助我,我会很感激。
var main= function(arr, fun) {
var i= 0,
max= arr.length,
array= [];
for (; i< max; i++) {
array.push(fun(arr[i]));
}
return array;
};
它本质上是一个非常模糊的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;
}
如果存在,它使用浏览器的内置函数,否则手动模拟它。
如果把参数“fun”当成一个函数名,也许你就能很好地理解它。您的代码只是在作为“fun”的输入参数运行后返回数组“arr”的结果。
如下图所示:
var arr = [0, 1, 2];
function fun( arg ) {
return arg + 1;
}
在我看来,这样调用您的代码:
main(arr, fun);
它应该返回:
[1, 2, 3]
当然,我没有检查它是否真的正确,你可以测试一下~
祝你好运
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
};
它通过将arr
函数的前一个数组的结果放入新数组中来创建一个新fun
数组。
例如,如果fun
得到一个数的平方并且arr
是 [1, 2, 3],main
将返回 [1, 4, 9]
它创建了一个名为main
. 这个函数接受一个数组和一个处理函数fun
作为参数。它为数组的每个元素提供fun
功能,并将此调用 ( fun(arr[i]
)) 的结果添加到新的array
. 例如,下面使用 main 函数返回一个数组{2, 3, 4, 5}
。
main({1, 2, 3, 4}, function(item) {
return item + 1;
});
让我们拆分代码:
// 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;
};
您需要一种策略来处理不熟悉的结构。在 Stackoverflow 上提出一个笼统的问题可能会在短期内有所帮助,但可能不会加强您的解释“肌肉”。
我建议首先确保您可以在调试器中运行代码并在函数的第一行代码处设置断点。然后使用调试器回答以下问题:
1)。进来的是什么?论据的类型是什么。
2)。返回什么
然后你会注意到 fun 实际上是一个函数。那么你的函数是从哪里调用的呢?什么函数作为第二个参数传递。
然后您可能想知道一些您以前从未见过的构造,例如 array.push() 的作用。所以一个快速的谷歌回答了这个问题。
突然间你明白并锻炼了你的“肌肉”。如果您仍然感到困惑,您可能有一个更好、更精确的问题要在这里问。
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);