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