国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

手寫數(shù)組操作常見(jiàn)方法的polyfill

SimonMa / 2089人閱讀

摘要:前言在操作當(dāng)中,前端開(kāi)發(fā)人員對(duì)數(shù)組的操作特別頻繁,隨著每一次的發(fā)版,對(duì)于數(shù)組所提供的也會(huì)增多,以增強(qiáng)數(shù)組的操作能力。下面整理了一些在工作當(dāng)中常用的數(shù)據(jù)操作方法的方便大家更好的掌握其原理。默認(rèn)從數(shù)組的第二個(gè)元素開(kāi)始。

前言:在JS操作當(dāng)中,前端開(kāi)發(fā)人員對(duì)數(shù)組的操作特別頻繁,隨著每一次ECMAScript的發(fā)版,對(duì)于數(shù)組所提供的API也會(huì)增多,以增強(qiáng)數(shù)組的操作能力。下面整理了一些在工作當(dāng)中常用的數(shù)據(jù)操作方法的polyfill,方便大家更好的掌握其原理。
數(shù)組map和forEach方法 forEach方法的polyfill
Array.prototype.forEachFn = function(callback){
  for(var i = 0;i< this.length;i++){
    callback.call(this,this[i],i,this);
  }
};

var list = [1,2,4,8,10];
list.forEachFn(function(item,index,arr){
  return list[index] = item*2;
});  //無(wú)返回值

[2, 4, 8, 16, 20] //list

map方法的polyfill
Array.prototype.mapFn = function(callback){
var newArr = [];
 for(var i = 0;i< this.length;i++){
  newArr.push(callback.call(this,this[i],i,this));
 }
 return newArr;
}


 var list = [1,3,5,7,9];
 list.mapFn(function(item){
   return item*2;
 });     //執(zhí)行完后返回一個(gè)新數(shù)組 [2, 6, 10, 14, 18]
 

再看看兩者的執(zhí)行速度:

可以看出forEach()的執(zhí)行速度比map()慢了70%

相同點(diǎn):
能用forEach()做到的,map()同樣可以。反過(guò)來(lái)也是如此。

差異:

forEach沒(méi)有返回值,但可在callback里改變?cè)瓟?shù)組,map返回一個(gè)新數(shù)組,不改變?cè)瓟?shù)組,可鏈?zhǔn)秸{(diào)用數(shù)組的其他方法。

map執(zhí)行速度比f(wàn)orEach更快。

數(shù)組every和some方法 every方法的polyfill
Array.prototype.everyFn = function(callback){
  for(var i = 0;i{
 return item>3
}); //返回false
some方法的polyfill
Array.prototype.someFn = function(callback){
 for(var i = 0;iitem>4) //返回true

var list = [1,2,4,8,10];
list.someFn(item =>item>12) //返回false

方法區(qū)別
every() 每一項(xiàng)都返回true才返回true
some() 只要有一項(xiàng)返回true就返回true

數(shù)組reduce和reduceRight方法 reduce方法的polyfill
Array.prototype.reduceFn = function(callback,initValue){
  var preValue = initValue || this[0];
  for(var i = initValue ? 0 : 1; i

求和:

var list = [1,3,5,7,9];
list.reduceFn(function(prev,current,currentIndex,arr){
  return prev+current;
});  //返回25

求和+10:

var list = [1,3,5,7,9];
list.reduceFn(function(prev,current,currentIndex,arr){
  return prev+current;
},10); //返回35
reduceRight方法的polyfill
Array.prototype.reduceRightFn = function(callback,initValue){
  var lastIndex = this.length - 1;
  var preValue = initValue || this[lastIndex];
  console.log(preValue);
  for(var i = initValue ? 0 : 1; i

求和:

var list = [1,3,5,7,9];
list.reduceRightFn(function(prev,current,currentIndex,arr){
  return prev+current;
});  //返回25

求和+10:

var list = [1,3,5,7,9];
list.reduceRightFn(function(prev,current,currentIndex,arr){
  return prev+current;
},10); //返回35

數(shù)組reduce方法其作用是對(duì)數(shù)組進(jìn)行歸并操作,傳遞兩個(gè)數(shù)組,第一個(gè)是callback,第二個(gè)參數(shù)可選(初始值)。其中回調(diào)函數(shù) callback 接收4個(gè)參數(shù):

1.previousValue - 存放的是上一次callback返回的結(jié)果,其初始值默認(rèn)為數(shù)組的第一個(gè)元素。
2.currentValue - 是當(dāng)前元素 。默認(rèn)從數(shù)組的第二個(gè)元素開(kāi)始。
3.currentIndex - 是當(dāng)前元素位置 。
4.array - 是當(dāng)前數(shù)組。

今天就整理這么多了,如果有時(shí)間,我會(huì)繼續(xù)豐富本頁(yè)面,以提供更全的資料供大家參考,如果喜歡我的文章,請(qǐng)Star!!!/::)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/97499.html

相關(guān)文章

  • 給初學(xué)者:JavaScript 中數(shù)組操作注意點(diǎn)

    摘要:使用遍歷數(shù)組有三點(diǎn)問(wèn)題遍歷順序不固定引擎不保證對(duì)象的遍歷順序。作為原生函數(shù),和自身操作字符串的速度是很快的。由于沒(méi)有返回值返回,所以它的回調(diào)函數(shù)通常是包含副作用的,否則這個(gè)寫了毫無(wú)意義。接受一個(gè)回調(diào)函數(shù),你可以提前,相當(dāng)于手寫循環(huán)中的。 不要用 for_in 遍歷數(shù)組 這是 JavaScript 初學(xué)者常見(jiàn)的誤區(qū)。for_in 用于遍歷對(duì)象中包括原型鏈上的所有可枚舉的(enumerab...

    tianyu 評(píng)論0 收藏0
  • 一名【合格】前端工程師自檢清單

    摘要:在他的重學(xué)前端課程中提到到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系中的重要崗位之一。大部分前端工程師的知識(shí),其實(shí)都是來(lái)自于實(shí)踐和工作中零散的學(xué)習(xí)。一基礎(chǔ)前端工程師吃飯的家伙,深度廣度一樣都不能差。 開(kāi)篇 前端開(kāi)發(fā)是一個(gè)非常特殊的行業(yè),它的歷史實(shí)際上不是很長(zhǎng),但是知識(shí)之繁雜,技術(shù)迭代速度之快是其他技術(shù)所不能比擬的。 winter在他的《重學(xué)前端》課程中提到: 到現(xiàn)在為止,前端工程師已經(jīng)成為研...

    羅志環(huán) 評(píng)論0 收藏0
  • 一名【合格】前端工程師自檢清單

    摘要:在他的重學(xué)前端課程中提到到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系中的重要崗位之一。大部分前端工程師的知識(shí),其實(shí)都是來(lái)自于實(shí)踐和工作中零散的學(xué)習(xí)。一基礎(chǔ)前端工程師吃飯的家伙,深度廣度一樣都不能差。開(kāi)篇 前端開(kāi)發(fā)是一個(gè)非常特殊的行業(yè),它的歷史實(shí)際上不是很長(zhǎng),但是知識(shí)之繁雜,技術(shù)迭代速度之快是其他技術(shù)所不能比擬的。 winter在他的《重學(xué)前端》課程中提到: 到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系...

    isaced 評(píng)論0 收藏0
  • Webpack入門到精通(1)

    前言 什么是webpack 本質(zhì)上,webpack 是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。當(dāng) webpack 處理應(yīng)用程序時(shí),它會(huì)遞歸地構(gòu)建一個(gè)依賴關(guān)系圖(dependency graph),其中包含應(yīng)用程序需要的每個(gè)模塊,然后將所有這些模塊打包成一個(gè)或多個(gè) bundle。 webpack 有哪些功能(代碼轉(zhuǎn)換 文件優(yōu)化 代碼分割 模塊合并 ...

    SunZhaopeng 評(píng)論0 收藏0
  • VueJS 開(kāi)發(fā)常見(jiàn)問(wèn)題集錦

    摘要:由于公司的前端開(kāi)始轉(zhuǎn)向,最近開(kāi)始使用這個(gè)框架進(jìn)行開(kāi)發(fā),遇到一些問(wèn)題記錄下來(lái),以備后用。查了一下,發(fā)現(xiàn)可能是打包或是資源引用問(wèn)題,目前該問(wèn)題還未被妥善處理,需要通過(guò)一些來(lái)解決這個(gè)問(wèn)題。為解決這個(gè)問(wèn)題,中提供了方法對(duì)象受現(xiàn) showImg(https://segmentfault.com/img/bVFgor?w=1280&h=720); 由于公司的前端開(kāi)始轉(zhuǎn)向 VueJS,最近開(kāi)始使用這...

    hedge_hog 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<