国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

遍歷數組:for、for-in、forEach、for-of

開發 前端
正如我們所看到的,for-of 循環比 for、for-in 和 .forEach() 的可用性要好。

這篇文章比較了遍歷數組的四種方式:

for 循環:

  1. for (let index=0; index < someArray.length; index++) { 
  2.   const elem = someArray[index]; 
  3.   // ··· 

for-in 循環:

  1. for (const key in someArray) { 
  2.   console.log(key); 

數組的 .forEach() 方法:

  1. someArray.forEach((elem, index) => { 
  2.   console.log(elem, index); 
  3. }); 

for-of 循環:

  1. for (const elem of someArray) { 
  2.   console.log(elem); 

for-of 往往是最好的選擇,我們會知道為什么。

for 循環[ES1]

JavaScript中的普通 for 循環已經很老了,它在ECMAScript 1中就已經存在了。這個 `for` 循環記錄了arr的每個元素的索引和值:

  1. const arr = ['a', 'b', 'c']; 
  2. arr.prop = 'property value'
  3.  
  4. for (let index=0; index < arr.length; index++) { 
  5.   const elem = arr[index]; 
  6.   console.log(index, elem); 
  7.  
  8. // 輸出: 
  9. // 0, 'a' 
  10. // 1, 'b' 
  11. // 2, 'c 

此循環的優缺點是什么?

  • 它是相當通用的,但可惜的是,當我們要做的是在一個數組上循環時,它也很啰嗦。
  • 如果我們不想從第一個 Array 元素開始循環,它還是很有用的。其他的循環機制都不能讓我們這樣做。

for-in 循環 [ES1]

for-in 循環和 for 循環一樣古老--它在ECMAScript 1中也已經存在。這個 for-in 循環記錄了arr的鍵:

  1. const arr = ['a', 'b', 'c']; 
  2. arr.prop = 'property value'
  3.  
  4. for (const key in arr) { 
  5.   console.log(key); 
  6.  
  7. // 輸出: 
  8. // '0' 
  9. // '1' 
  10. // '2' 
  11. // 'prop' 

for-in 不是循環遍歷數組的好選擇:

  • 它訪問屬性鍵,而不是值。
  • 作為屬性鍵,Array元素的索引是字符串,而不是數字
  • 它訪問所有可枚舉的屬性鍵(包括自有的和繼承的),而不僅僅是Array元素的屬性鍵。

for-in 訪問繼承的屬性確實有一個用例:循環一個對象的所有可枚舉屬性。

Array方法.forEach() [ES5]

考慮到 for 和 for-in 都不是特別適合在Array上循環,在ECMAScript 5中引入了一個輔助方法:Array.prototype.forEach()。

  1. const arr = ['a', 'b', 'c']; 
  2. arr.prop = 'property value'
  3.  
  4. arr.forEach((elem, index) => { 
  5.   console.log(elem, index); 
  6. }); 
  7.  
  8. // 輸出: 
  9. // 'a', 0 
  10. // 'b', 1 
  11. // 'c', 2 

這個方法真的很方便。它讓我們無需做太多事情就能訪問 Array 元素和 Array 元素索引。箭頭函數(在ES6中引入)使這種方法在語法上更加優雅。

.forEach() 的主要缺點是:

  • 你不能在這種循環的“主體”中使用 await。
  • 你不能提早退出 .forEach() 循環,在 for 循環中,我們可以使用 break。

退出.forEach()--一個變通方法

如果你想使用像 .forEach() 這樣的循環并提前離開,有一個變通的辦法:.some() 也會在所有Array元素上循環,如果它的回調返回一個真值,就會停止。

  1. onst arr = ['red', 'green', 'blue']; 
  2. arr.some((elem, index) => { 
  3.   if (index >= 2) { 
  4.     return true; // break from loop 
  5.   } 
  6.   console.log(elem); 
  7.   // This callback implicitly returns `undefined`, which 
  8.   // is a falsy value. Therefore, looping continues. 
  9. }); 
  10.  
  11. // 輸出: 
  12. // 'red' 
  13. // 'green' 

可以說,這是對 .some() 的濫用,我不知道這段代碼有多容易理解(與 for-of 和 break 相比)。

for-of 循環 [ES6]

在ECMAScript 6中,for-of 循環被添加到JavaScript中。

  1. const arr = ['a', 'b', 'c']; 
  2. arr.prop = 'property value'
  3.  
  4. for (const elem of arr) { 
  5.   console.log(elem); 
  6. // 輸出: 
  7. // 'a' 
  8. // 'b' 
  9. // 'c' 

for-of 非常適合循環遍歷數組:

  • 它在數組元素上進行迭代。
  • 我們可以使用 await:而且,如果需要,可以輕松遷移到 for-await-of。
  • 我們可以使用 break 和 continue --即使是外部范圍。

for-of 和 iterable 對象

for-of 的另一個好處是,我們不僅可以在Arrays上循環,還可以在任何可迭代對象上循環--例如,在Maps上循環。

  1. const myMap = new Map() 
  2.   .set(false, 'no') 
  3.   .set(true, 'yes') 
  4. for (const [key, value] of myMap) { 
  5.   console.log(key, value); 
  6.  
  7. // 輸出: 
  8. // false, 'no' 
  9. // true, 'yes' 

在 myMap 上迭代產生 [key, value] 對,我們對其進行解構,以直接訪問每個對的組件。

for-of 與 數組下標

數組方法 .entries() 在 [index, value] 對上返回一個可迭代對象。如果使用 for-of 和解構這個方法,我們可以方便地訪問Array索引。

  1. const arr = ['chocolate', 'vanilla', 'strawberry']; 
  2.  
  3. for (const [index, elem] of arr.entries()) { 
  4.   console.log(index, elem); 
  5. // 輸出: 
  6. // 0, 'chocolate' 
  7. // 1, 'vanilla' 
  8. // 2, 'strawberry' 

總結

正如我們所看到的,for-of 循環比 for、for-in 和 .forEach() 的可用性要好。

四種循環機制之間的任何性能差異通常都不重要。如果有的話,你可能正在做一些計算量非常大的事情,切換到WebAssembly可能是有意義的。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2022-09-07 11:52:48

forforEach前端

2019-07-25 10:08:05

JavaScript數組轉換

2009-11-17 15:00:19

PHP遍歷數組

2021-02-05 23:08:10

JS代碼循環

2010-04-16 10:24:17

Oracle存儲過程

2024-03-11 01:00:00

jsfor循環

2019-03-04 09:22:52

阿里巴巴foreach Java

2016-08-05 14:48:00

javascripthtml前端

2025-03-17 08:30:00

JavaScript循環代碼

2010-11-24 13:11:06

MySQL遍歷數據表

2020-11-16 10:19:33

Java

2025-05-08 08:10:53

2023-12-11 21:45:52

Javaforeach循環結構

2021-11-05 06:57:49

數組對象遍歷器

2024-08-30 08:43:24

JavaScriptforEachfor循環

2024-04-25 07:54:46

遍歷數組PythonFor循環

2009-11-17 15:07:16

PHP數組遍歷

2009-12-09 09:30:21

PHP foreach

2020-12-22 14:11:45

JS forEach()map()

2021-11-24 08:43:02

扁平化函數數組
點贊
收藏

51CTO技術棧公眾號

男女啪啪的视频| 91精品国产99久久久久久红楼| 可以免费在线看黄的网站| 66久久国产| 亚洲国产精品久久久久| 免费黄色网页| 日本美女视频一区二区| 日韩av片免费在线观看| 9i看片成人免费高清| 福利视频一区二区| 情侣黄网站免费看| 日韩二区在线观看| 成人午夜两性视频| 日韩中文一区二区| 亚洲精品理论电影| 电影av一区| 亚洲精品欧美在线| 男人亚洲天堂网| 激情六月婷婷综合| 蜜桃导航-精品导航| 国产精品福利在线观看播放| 欧美激情一级欧美精品| 国产精品久久久久久吹潮| 亚洲аv电影天堂网| 88xx成人网| 国产精品免费看久久久香蕉| 国产专区视频| 久久成人免费日本黄色| 色视频网站在线观看| 色婷婷久久久久swag精品| 欧美不卡在线播放| 国内精品自线一区二区三区视频| 欧美精品国产精品久久久| 婷婷激情图片久久| 国产精品ⅴa在线观看h| 久久aimee| 国产男女无遮挡| 亚洲伊人春色| 8050国产精品久久久久久| 日韩黄色av| 欧美韩日一区二区| 天堂va欧美ⅴa亚洲va一国产| 一色桃子一区二区| 国产成人福利夜色影视| 在线精品91av| 免费成人毛片| 精品国产美女在线| 日韩免费精品| 欧美激情视频给我| 西瓜成人精品人成网站| 国产成人综合一区二区三区| 色135综合网| 91嫩草在线| 亚洲精品美女91| 日韩国产欧美精品| 国产一区视频在线看| 9久久9毛片又大又硬又粗| ww久久中文字幕| 人人澡人人爽人人揉| 亚洲一区二区三区美女| 国模吧精品人体gogo| 91麻豆精品国产91久久久更新时间 | 日本三级在线视频| 欧美视频自拍偷拍| 欧美精品videossex少妇| 亚洲国产另类久久精品 | 在线观看黄av| 精品伊人久久久久7777人| 亚洲永久一区二区三区在线| 国产精品一区一区三区| 成人免费观看毛片| 亚洲一区二区在线免费看| 男男激情在线| 337p日本欧洲亚洲大胆精品| 激情视频亚洲| 成人网在线免费观看| 日韩专区在线视频| 欧美 日韩 亚洲 一区| 亚洲人成在线播放网站岛国| 国产日韩精品在线看| 精品无人区太爽高潮在线播放| 国产精品一区二区三区av| 国产精品美女免费视频| 亚洲欧美日本视频在线观看| www.射射射| 欧美日韩亚洲激情| 激情亚洲影院在线观看| 欧洲中文字幕国产精品| 日韩福利电影在线| 羞羞的视频免费| 日韩一区二区视频| 凹凸av导航大全精品| 老司机精品福利在线观看| 国产日韩在线不卡| 精品美女在线观看视频在线观看 | 久久99久久人婷婷精品综合| 成人免费福利在线| 国产原创一区二区三区| 免费高清特黄a大片| 欧美mv日韩mv亚洲| 少妇一区二区三区| 日韩在线观看电影完整版高清免费| 久久久久高清精品| 免费黄色在线网站| 欧美精品成人91久久久久久久| 在线综合视频| 成人au免费视频影院| 欧美精品一区二区三区四区 | 3d黄动漫网站| 欧美一级片在线观看| 成人免费在线电影网| 精品一区二区国产| 亚洲欧美综合网| 惠美惠精品网| 成人3d动漫一区二区三区91| 日本一区二区不卡视频| 免费男女羞羞的视频网站在线观看| 国产成人欧美在线观看| 国产精品1区二区.| 免费a级人成a大片在线观看| 欧美一级大片在线免费观看| 国产很黄免费观看久久| 免费在线视频欧美| 国产精品免费小视频| 久久久久久99久久久精品网站| 在线heyzo| 99久久国产免费免费| 日韩一区欧美小说| 国产精品高清一区二区| 亚洲国产精品毛片| 日本久久电影网| 色狮一区二区三区四区视频| www成人免费观看网站| 久久久精品国产| 国内成人免费视频| 在线观看wwwxxxx| 精品在线不卡| 色综合久久66| 欧美三级情趣内衣| 999www成人| 欧美黄色成人网| 久久新电视剧免费观看| 992tv国产精品成人影院| 一区二区三区四区视频在线观看 | 亚洲色图校园春色| 蜜桃久久av| 岛国在线视频免费看| 国产精品丝袜高跟| 一区二区三区在线不卡| 乱亲女h秽乱长久久久| 伊人国产在线视频| 欧美多人乱p欧美4p久久| 91天堂素人约啪| 最新亚洲国产| 中文字幕日本最新乱码视频| 中文字幕久热精品在线视频| 高潮精品一区videoshd| 日韩av大片站长工具| 超碰97免费观看| 亚洲小视频在线| 欧美久久香蕉| 久久a爱视频| 99精品国产福利在线观看免费| 色视频成人在线观看免| 色婷婷色综合| 亚洲男人都懂的网站| 亚洲综合小说区| 欧美午夜精品久久久久久孕妇 | 成人欧美在线视频| 婷婷国产在线综合| 91精品福利| 日本中文在线观看| 日韩国产伦理| 亚洲三级 欧美三级| 91丝袜国产在线播放| 国产一线二线三线女| 色婷婷成人在线| 久草在线中文最新视频| 日韩久久在线| 亚洲人成在线播放| 成人av网址在线观看| 国产一区二区久久久久| 成人三级av| 51精品国产人成在线观看| 欧美日韩精品免费| 久久精品久久精品| 久久久加勒比| 日本韩国在线视频| 国产日韩欧美综合精品| 日韩黄在线观看| 91亚洲国产成人精品一区二三| 极品尤物一区| 在线免费看污| 日韩欧美精品在线不卡| 久久网福利资源网站| 亚洲成av人影院| 久久免费黄色| 成人51免费| 青青久在线视频免费观看| 视频一区视频二区视频|