摘要:前言在操作當(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] //listmap方法的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方法的polyfillArray.prototype.everyFn = function(callback){ for(var i = 0;isome方法的polyfill{ return item>3 }); //返回false
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
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); //返回35reduceRight方法的polyfillArray.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
摘要:使用遍歷數(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...
摘要:在他的重學(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)成為研...
摘要:在他的重學(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ā)體系...
前言 什么是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)化 代碼分割 模塊合并 ...
摘要:由于公司的前端開(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)始使用這...
閱讀 3214·2023-04-25 18:43
閱讀 892·2021-11-24 09:39
閱讀 1361·2021-10-14 09:43
閱讀 3890·2021-09-22 15:58
閱讀 1899·2019-08-29 17:18
閱讀 410·2019-08-29 14:14
閱讀 3078·2019-08-29 13:01
閱讀 1616·2019-08-29 12:33