日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

小撸 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']復制代碼


怎樣自己來實現和map一樣的功能呢?


直接貼代碼

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 源码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。