小撸 array map 源码
生活随笔
收集整理的這篇文章主要介紹了
小撸 array map 源码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
官方的方法有時候用著確實挺好用的,那仔細想想是怎樣實現(xiàn)的呢?自己是否可以搞一個,那就從最簡單的開始吧 Array.prototype.map?
要擼一個array map方法的源碼,首先需要看下他的具體的定義和使用,先搞明白他的功能呀【貌似是廢話哈】
官方定義
var new_array = arr.map(function callback(currentValue[, index[, array]]) {// Return element for new_array }[, thisArg]);其實就是,只有第一個參數(shù)是必須的,其他的都是可選的,也就是函數(shù)內(nèi)部處理了 var new_array = arr.map(function callback(currentValue,index,array) {// Return element for new_array },thisArg); 復(fù)制代碼參數(shù)
callback生成新數(shù)組元素的函數(shù),使用三個參數(shù):currentValuecallback 數(shù)組中正在處理的當(dāng)前元素。index可選callback 數(shù)組中正在處理的當(dāng)前元素的索引。array可選callback map 方法被調(diào)用的數(shù)組。thisArg可選執(zhí)行 callback 函數(shù)時使用的this 值。返回值
一個新數(shù)組,每個元素都是回調(diào)函數(shù)的結(jié)果。
描述
map 方法會給原數(shù)組中的每個元素都按順序調(diào)用一次 callback 函數(shù)。callback 每次執(zhí)行后的返回值(包括 undefined)組合起來形成一個新數(shù)組。 callback 函數(shù)只會在有值的索引上被調(diào)用;那些從來沒被賦過值或者使用 delete 刪除的索引則不會被調(diào)用。
舉個例子 - 最簡單的栗子
咱們主要是為了演示下函數(shù)功能,舉個比較簡單的說明下就可以
let arr=['a','b','c']; let newArr=arr.map(function(item,index){console.log(index);return item+'A'; });輸出結(jié)果 arr 不變 --------------- 0 1 2 nweArr : ['aA','bA','cA']復(fù)制代碼直接貼代碼
Array.prototype.cusomerMap=function(cb,context){let newArr=[];for(var i=0;i<this.length;i++){if(cb && typeof cb==='function'){let val = cb.call(context,this[i],i,this);newArr.push(val);}}return newArr; }現(xiàn)在想想代碼好少啊,但是功能確實好用。復(fù)制代碼感覺官方的這些方法沒事的時候就應(yīng)該想想他們怎么寫出來的,關(guān)鍵是這幫人怎么想的。
本文比較簡單,只是為了說明現(xiàn)成的東西固然好用,但是要明白實現(xiàn)的機制!
歡迎糾錯
總結(jié)
以上是生活随笔為你收集整理的小撸 array map 源码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: K8S集群tls证书管理
- 下一篇: 流利说递交招股书:上半年亏1.8亿 王翌