-3

このコードを理解する必要があります。それは私の会社の元開発者のために作成されましたが、実際にはそれがどのように機能するのかよくわかりません...誰かが私を助けることができれば、私はそれを高く評価します.

var main= function(arr, fun) {
     var i= 0,
         max= arr.length,
         array= [];
     for (; i< max; i++) {
       array.push(fun(arr[i]));
     }
     return array;
};
4

8 に答える 8

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;
}

ブラウザの組み込み関数が存在する場合はそれを使用し、そうでない場合は手動でシミュレートします。

于 2013-10-17T12:01:21.323 に答える
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);

フィドル

于 2013-10-17T12:01:08.603 に答える
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
};
于 2013-10-17T12:01:46.317 に答える
0

arr関数の前の配列からの結果を新しい配列に入れることによって、新しい配列を作成しますfun

たとえばfun、数値の 2 乗を取得してarr[1, 2, 3] の場合、main[1, 4, 9] が返されます。

于 2013-10-17T12:01:49.903 に答える
0

という関数を作成しますmain。この関数は、配列とハンドラー関数funをパラメーターとして受け取ります。配列の各要素をfun関数に提供し、この呼び出し ( fun(arr[i])) の結果を新しいに追加しarrayます。たとえば、次のように main 関数を使用すると、配列が返されます{2, 3, 4, 5}

main({1, 2, 3, 4}, function(item) {
    return item + 1;
});
于 2013-10-17T12:02:33.220 に答える
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;
};
于 2013-10-17T12:03:23.220 に答える