0

配列と関数 (convertFunc) を受け取る JavaScript で関数を作成するにはどうすればよいですか。この関数は、配列のすべての要素に対して convertFunc を呼び出します。この要素には、 thisキーワードを介してアクセスする必要があります。関数は、convertFunc 呼び出しの戻り値の配列を返す必要がありますか? 例えば

function(array, convertFunc() {  // array=[1,2,3]
    return this+10;
} 

[11,12,13] を返す必要があります

ありがとう

4

4 に答える 4

2
  1. 関数を作成します。function map(arr, convertFunc) {
  2. array のすべての要素を反復処理しますarr
  3. ヒント: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/call
  4. 関数呼び出しからのすべての結果を含む配列を返します。
  5. }

自分で正確な詳細を把握してください。頑張ってください :)

于 2012-08-10T17:40:54.893 に答える
0

array.map(callback[, thisObject]);あなたに合うかもしれません。

例:

var nums = [1,2,3];

function FuncName(x)
{
    return x+10;
}

var result = nums.map(FuncName); //[11,12,13]
于 2012-08-10T17:42:21.117 に答える
0

Array オブジェクトの拡張を探している場合は、これを試してください

Array.prototype.convertFunc = function() {

var arr = this, i; // As you want array is access using the this keyword.

for(i = 0; i<arr.length; i++)
{
    arr[i] = arr[i] + 10;
}

return arr;
}

var myArray = [1,2,3];


 // Call like this
 myArray.convertFunc();

ここでフィドルhttp://jsfiddle.net/PYxzj/

アップデート

そして、あなたの質問に答えるには、これを試してください

    // Pass your array and a function as parameter
function arrayModify(array, convertFunc)
{
  return array.convertFunc();
}


// This function iterates your array and adds 10 to each element.
var arrayAddFunction = function() {

   var arr = this, i;
   for(i = 0; i<arr.length; i++)
   {
      arr[i] = arr[i] + 10;
   }

return arr;
}

// Extending the array object
Array.prototype.convertFunc = arrayAddFunction;

var aa = [1,2,3];

// As you want send your array and a function as parameters to another function 
alert(arrayModify(aa,arrayAddFunction)); // -> [11, 12, 13]

ここでフィドルhttp://jsfiddle.net/qzB4e/

于 2012-08-10T17:42:41.910 に答える
0
var myFunc = function(fn) {  // array=[1,2,3]
    return fn(this);
};

myFunc.call(arr,function convertFunc(){
    return this+10;
});

しかし、正確な問題を解決するには:

var arr = [1,2,3], addTen = function(){
    for (var l=this.length;l--;) this[l] += 10;
};

addTen.call(arr);
于 2012-08-10T17:45:30.757 に答える