国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - JavaScript 語句之常用 for 循環詳解

JavaScript 語句之常用 for 循環詳解

2022-02-21 16:50js教程網 js教程

這篇文章主要介紹了JavaScript 語句之常用 for 循環,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

JavaScript中循環語句不少,for、for in、for of和forEach循環,今天對比Array、Object、Set(ES6)、Map(ES6)四種數據結構循環語句支持的情況及區別。

新建四種數據類型的測試數據

?
1
2
3
4
let arr = [1, 2, 3, 4, 5, 6];
let obj = { a: 1, b: 2, c: 3 };
let map = new Map([['a', 'a1'], ['b', 'b2'], ['c', 'c3']]);
let set = new Set(['a', 'b', 'c']);

1 for

普通for循環在 Array 中可以使用。 遍歷數組時,是遍歷數組 下標 索引,通過下標去取值。

?
1
2
3
4
for (let i = 0; i < arr.length; i++) { // i是下標(索引)
  console.log(i)
  console.log(arr[i])
}

2 for in

for in 在 Array 和 Object 中都可以使用。需要注意的是,在原型上的屬性,也會被循環出來。

Array

?
1
2
3
4
5
6
7
let arr = [1, 2, 3, 4, 5, 6];
Array.prototype.a = "1"
 
for (let i in arr) {  // i是下標(索引)
  console.log(i)
  console.log(arr[i])
}

可以看到原型上的也被循環出來了,只并不是我們想要的,我們可以通過 hasOwnProperty過濾掉原型上的屬性。

?
1
2
3
4
5
6
7
8
9
let arr = [1, 2, 3, 4, 5, 6];
Array.prototype.a = "1"
 
for (let i in arr) {  // i是下標(索引)
  if (arr.hasOwnProperty(i)) {
    console.log(i)
    console.log(arr[i])
  }
}

Object

?
1
2
3
4
5
6
7
let obj = { a: 1, b: '2', c: 3 };
Object.prototype.d = 4
 
for (let key in obj) {  // key是鍵
  console.log(key)
  console.log(obj[key])
}

對于Object也是會存在同樣問題,原型上的也會被循環出來,同樣也可以通過 hasOwnPr operty 過濾 掉原型上的屬性 。

?
1
2
3
4
5
6
for (let key in obj) {  // key是鍵
  if (obj.hasOwnProperty(key)) {
    console.log(key)
    console.log(obj[key])
  }
}

3 for of

for of在Array、Object、Set、Map中都可以使用。

Array

Array本質上也是對象,所以我們可以在隱式原型(__proto__)上可以找到定義好的方法。

?
1
2
3
4
5
6
7
8
9
10
11
12
for (let key of arr.keys()) {  // key是下標
  console.log(key)
}
for (let value of arr) {     // value是值
  console.log(value)
}
for (let value of arr.values()) { // value是值
  console.log(value)
}
for (let [key, value] of arr.entries()) { // key是下標 value是值
  console.log(key,value)
}

Object

?
1
2
3
for (let [key, value] of Object.entries(obj)) { // key是下標 value是值
  console.log(key, value)
}

Set

由于Set是沒有重復的,所以keys和values是一致的,也就是說下面四個輸出是一致的

?
1
2
3
4
5
6
7
8
9
10
11
12
for (let key of set.keys()) { 
  console.log(key)
}
for (let value of set) {    
  console.log(value)
}
for (let value of set.values()) {
  console.log(value)
}
for (let [key, value] of set.entries()) {
  console.log(key, value)
}

Map

?
1
2
3
4
5
6
7
8
9
10
11
12
for (let key of map.keys()) {
  console.log(key)
}
for (let value of map) {    
  console.log(value)
}
for (let value of map.values()) {
  console.log(value)
}
for (let [key, value] of map.entries()) {
  console.log(key, value)
}

可以使用break,continue語句跳出循環,或者使用return從函數體返回。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for (let key of arr.keys()) {  // key是下標
  if (key == 3) {
    return
  }
  console.log(key)
}
for (let key of arr.keys()) {  // key是下標
  if (key == 3) {
    break
  }
  console.log(key)
}
for (let key of arr.keys()) {  // key是下標
  if (key == 3) {
    continue
  }
  console.log(key)
}

4 forEach

forEach循環在Array、Set、Map中都可以使用。但是方法不能使用break,continue語句跳出循環,或者使用return從函數體返回。

Array

?
1
2
3
arr.forEach((value, index) => {
  console.log(value, index)
})

Se t

?
1
2
3
set.forEach((value, key) => {
  console.log(value, key)
})

M ap

?
1
2
3
map.forEach((value, key) => {
  console.log(value, key)
})

break,continue和return

使用continue會提示

?
1
Illegal continue statement: no surrounding iteration statement

使用break會提示

?
1
Illegal break statement

使用return,并不會返回,而是繼續循環

5 總結

普通 for 循環在 Array 中可以使用。遍歷數組時,是遍歷數組下標索引,通過下標去取值;for in 在 Array 和 Object 中都可以使用。但需要注意的是,在原型上的屬性,也會被循環出來;for of 在Array、Object、Set、Map中都可以使用。也可以使用break,continue和return;forEach循環在Array、Set、Map中都可以使用。但是方法不能使用break,continue語句跳出循環,或者使用return從函數體返回。

到此這篇關于JavaScript 語句之常用 for 循環詳解的文章就介紹到這了,更多相關js for 循環內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

延伸 · 閱讀

精彩推薦
  • js教程three.js如何實現3D動態文字效果

    three.js如何實現3D動態文字效果

    這篇文章主要給大家介紹了關于three.js如何實現3D動態文字效果的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習...

    alphardex9982022-01-25
  • js教程如何在現代JavaScript中編寫異步任務

    如何在現代JavaScript中編寫異步任務

    這篇文章主要給大家介紹了關于如何在現代JavaScript中編寫異步任務的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考...

    瘋狂的技術宅11842022-01-12
  • js教程原生js實現2048小游戲

    原生js實現2048小游戲

    這篇文章主要為大家詳細介紹了原生js實現2048小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    一個21歲的老同志5562022-02-13
  • js教程基于 Next.js 的 SSR/SSG 方案了解一下?

    基于 Next.js 的 SSR/SSG 方案了解一下?

    服務端渲染(SSR,Server Side Render)與客戶端渲染(CSR,Client Side Render)的核心區分點簡單來說就是完整的 HTML 文檔在服務端還是瀏覽器里組裝完成。...

    DYBOY4832021-12-27
  • js教程js 創建對象的多種方式與優缺點小結

    js 創建對象的多種方式與優缺點小結

    這篇文章主要介紹了js 創建對象的多種方式與優缺點,幫助大家更好的理解和學習使用JavaScript,感興趣的朋友可以了解下...

    feng12052022-02-15
  • js教程js仿淘寶放大鏡效果

    js仿淘寶放大鏡效果

    這篇文章主要為大家詳細介紹了js仿淘寶放大鏡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    屈小康11232021-12-21
  • js教程詳解uniapp的全局變量實現方式

    詳解uniapp的全局變量實現方式

    這篇文章主要介紹了詳解uniapp的全局變量實現方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下...

    繭君11022021-12-29
  • js教程提高JavaScript性能技巧,以獲得更快的網站

    提高JavaScript性能技巧,以獲得更快的網站

    在開發應用程序時,性能是最重要的問題之一,所有軟件開發人員都應該監控和改進應用程序每一層的性能。從數據庫到服務器端語言,出現性能問題的時...

    粵嵌教育7752022-01-11
主站蜘蛛池模板: 91视频在线播放视频 | 欧美精三区欧美精三区 | 久久精视频 | 亚洲高清一区二区三区 | 日韩精品一区二区三区视频播放 | 三级视频网站 | 国产韩国精品一区二区三区 | 一区二区三区在线 | 欧美专区在线观看 | 欧美三区二区一区 | 国产精品久久久久国产a级 九九在线精品视频 | 精品女同一区二区三区在线绯色 | 中文字幕视频在线免费 | 一本黄色片 | 欧美精品一二区 | 狠狠淫| 韩日毛片 | 亚洲乱码国产乱码精品精98午夜 | 国产欧美日韩在线观看 | 久久久亚洲综合 | 中文字幕av一区二区三区免费看 | 久久久国产视频 | 欧美日韩一区二区三区不卡视频 | 中文字幕久久久 | 亚洲美女在线视频 | 国产精品久久久久久久久久免费动 | 国产99精品在线 | 欧美成人不卡 | 日韩中文字幕视频在线 | 久草成人 | 成人午夜视频免费 | 亚洲国产综合在线 | 久久波多野结衣 | 午夜激情在线免费观看 | 九九国产| 日韩精品中文字幕在线观看 | 亚洲国产精品一区二区三区 | 天天操天操 | 在线永久免费观看黄网站 | 国产精品激情 | 国产精品永久免费 |