配列メソッド--mapの実装

2144 ワード

プロジェクトでは,配列のmap,filter,reduceなどの手法をよく用い,これらの手法の利便性を享受するとともに,これらの手法がどのように実現されているのかを明らかにし,より十分に利用できるようにしなければならない.この記事は主にmapの実現方法です.
まず配列の方法はarr.slice()のように直接呼び出すことができ、このような方法を配列のプロトタイプオブジェクトに書く必要があります.これにより、インスタンス化された配列を直接使用して呼び出すことができます.では、私たちが新しく作成した方法の名前をconsMapとします.まずmapの使い方,arr.map(function(item,i,arr),this)を振り返り,最後に別の処理後の新しい配列を返す.
コード#コード#
//fn           ,context     
Array.prototype.consMap = function(fn,context){

    if(!(fn instanceof Function)){
        throw new TypeError('         ')
    }
    var arr = this;   //this        
    var newArr = [];
    for(var i = 0;i< arr.length;i++){
        var newValue = fn.call(context,arr[i],i,arr);
        newArr.push(newValue);
    }
    return newArr;
}

検証#ケンショウ#
    var arr = [1,2,3]
    var newArr = arr.consMap(function(item,i,arr){
        return item + 1;
    })
    console.log(newArr);

結果
    [2,3,4]

以上が配列mapを実現する方法である.