日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
從forEach開始談?wù)劚闅v技巧

 [[169550]]

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站建設(shè)、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、成都小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的做網(wǎng)站、成都網(wǎng)站設(shè)計、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等多方位專業(yè)化運作于一體。

forEach

今天從 forEach 開始談?wù)劚闅v吧。

forEach 作為一個比較出眾的遍歷操作,之前有很多庫都對其進(jìn)行過各種包裝,然而我還是發(fā)現(xiàn)很多人并不是非常理解 forEach。

比如第二個參數(shù) this 的使用。

往常都習(xí)慣這么做: 

 
 
  1. const self = this 
  2.  
  3. arr.forEach(function(item) { 
  4.  
  5. // do something with this 
  6.  
  7. }) 

 然而如果使用第二個參數(shù)就可以這樣: 

 
 
  1. arr.forEach(function(item) { 
  2.  
  3. // do something with this 
  4.  
  5. }, this) 

 省去了一個中間的self,看起來更優(yōu)美了

那么有沒有更好的處理方式呢?

有的: 

 
 
  1. arr.forEach(item => { 
  2.  
  3. // do something 
  4.  
  5. }) 

 由于 arrow function 的特性,自動綁定父 scope 的 this, 會更加簡潔,而且少了個function關(guān)鍵字,可讀性更好。

for

說到循環(huán)必定要說到for循環(huán)了。js里面的for循環(huán)有好幾種使用方式:

C 系列 for 循環(huán): 

 
 
  1. for (let index = 0; index < arr.length; index++) { 
  2.  
  3. // do something 
  4.  

 index 是 arr 的索引,在循環(huán)體中通過 arr[index] 調(diào)用當(dāng)前的元素,我非常不喜歡這種方式,因為要寫兩個分號!

還有另一種比較簡單的方式: 

 
 
  1. for (let key in obj) { 
  2.  
  3. // do something 
  4.  

 不過這個方式一般用來遍歷對象,下文有說。

關(guān)于 for 循環(huán)還有 ES2015 規(guī)定的一種 

 
 
  1. for (let item of arr) { 
  2.  
  3. // do something 
  4.  

 這種遍歷方式和之前的***區(qū)別在于item,它是value而非key,可以直接迭代出內(nèi)容。

不過這種方式我個人用的不多,因為很多情況下我更喜歡用array下的方法。對于對象的遍歷更傾向于for...in

map 系列

這一塊是js的函數(shù)式領(lǐng)域了。

Array.prototype下掛載著幾個非常好用的遍歷函數(shù)。比如map

它會遍歷arr下的所有內(nèi)容,做操作之后返回數(shù)據(jù),形成一個新的數(shù)組: 

 
 
  1. const arr = [1, 2, 3] 
  2.  
  3. arr.map(current => current * 5) 

 在 react 最常用。經(jīng)常用來遍歷數(shù)據(jù),形成dom: 

 
 
  1. someRender() { 
  2.  
  3. return this.state.data.map((current, index) => { 
  4.  
  5. return { current }
  6.  
  7.  
  8. }) 
  9.  

 不過 map 有一點不好的地方在于不能控制循環(huán)的流程,如果不能完成,就返回undefined繼續(xù)下一次迭代。所以遇到可能會返回undefined的情況應(yīng)該用forEach或者for循環(huán)遍歷

還有filter用法和map一模一樣,只是它用來過濾數(shù)據(jù)。非常的好用。

arguments

說到遍歷不得不提及arguments, 在function()中的所有參數(shù),奇怪的是它并不是一個數(shù)組。只是一個類數(shù)組。

一般需要轉(zhuǎn)成數(shù)組: 

 
 
  1. function foo() { 
  2.  
  3. const args = Array.prototype.slice.call(arguments) 
  4.  
  5. return Array.isArray(args) 
  6.  

 但是我個人并不認(rèn)同這樣的方法,有了新的 ES2015 就不要用這么丑的語法了 

 
 
  1. function foo(...args) { 
  2.  
  3. // args 是數(shù)組 
  4.  

 ES2015 的 rest 語法使得剩余參數(shù)都傳入args里面,比之前的還要調(diào)Array的方法要輕松不少。

object

對象的遍歷是非常常用的功能。

我個人更喜歡用for...in語法,但是有一點需要注意: 

 
 
  1. for (let index in obj) { 
  2.  
  3. if(obj.hasOwnProperty(index)) { 
  4.  
  5. // do something 
  6.  
  7.  

 因為除非強(qiáng)制指定,否則對象都是不純凈的。都會有__proto__屬性,也會被迭代出來。需要過濾一下。

好了,如何創(chuàng)建純凈的對象? 

 
 
  1. const plainObj = Object.create(null) 

最輕的obj結(jié)構(gòu),內(nèi)部沒有任何多余的屬性。


本文題目:從forEach開始談?wù)劚闅v技巧
本文路徑:http://www.5511xx.com/article/dhhpepe.html