国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript之iterable_動力節點Java學院整理

2019-11-19 16:13:22
字體:
來源:轉載
供稿:網友

遍歷Array可以采用下標循環,遍歷Map和Set就無法使用下標。為了統一集合類型,ES6標準引入了新的iterable類型,Array、Map和Set都屬于iterable類型。

具有iterable類型的集合可以通過新的for ... of循環來遍歷。

for ... of循環是ES6引入的新的語法,請測試你的瀏覽器是否支持:

'use strict';var a = [1, 2, 3];for (var x of a) {}alert('你的瀏覽器支持for ... of');

for ... of循環遍歷集合,用法如下:

var a = ['A', 'B', 'C'];var s = new Set(['A', 'B', 'C']);var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);for (var x of a) { // 遍歷Array  alert(x);}for (var x of s) { // 遍歷Set  alert(x);}for (var x of m) { // 遍歷Map  alert(x[0] + '=' + x[1]);}

你可能會有疑問,for ... of循環和for ... in循環有何區別?

for ... in循環由于歷史遺留問題,它遍歷的實際上是對象的屬性名稱。一個Array數組實際上也是一個對象,它的每個元素的索引被視為一個屬性。

當我們手動給Array對象添加了額外的屬性后,for ... in循環將帶來意想不到的意外效果:

var a = ['A', 'B', 'C'];a.name = 'Hello';for (var x in a) {  alert(x); // '0', '1', '2', 'name'}for ... in循環將把name包括在內,但Array的length屬性卻不包括在內。for ... of循環則完全修復了這些問題,它只循環集合本身的元素:var a = ['A', 'B', 'C'];a.name = 'Hello';for (var x of a) {  alert(x); // 'A', 'B', 'C'}

這就是為什么要引入新的for ... of循環。

然而,更好的方式是直接使用iterable內置的forEach方法,它接收一個函數,每次迭代就自動回調該函數。以Array為例:

var a = ['A', 'B', 'C'];a.forEach(function (element, index, array) {  // element: 指向當前元素的值  // index: 指向當前索引  // array: 指向Array對象本身  alert(element);});

注意,forEach()方法是ES5.1標準引入的,你需要測試瀏覽器是否支持。

SetArray類似,但Set沒有索引,因此回調函數的前兩個參數都是元素本身:

var s = new Set(['A', 'B', 'C']);s.forEach(function (element, sameElement, set) {  alert(element);});

Map的回調函數參數依次為valuekeymap本身:

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);m.forEach(function (value, key, map) {  alert(value);});

如果對某些參數不感興趣,由于JavaScript的函數調用不要求參數必須一致,因此可以忽略它們。例如,只需要獲得Arrayelement

var a = ['A', 'B', 'C'];a.forEach(function (element) {  alert(element);});
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜山县| 博乐市| 仁寿县| 山阴县| 博野县| 西峡县| 湖口县| 阜平县| 常宁市| 安化县| 丰都县| 乌拉特前旗| 尉氏县| 新津县| 平南县| 青海省| 玉树县| 汝城县| 四平市| 灌南县| 会宁县| 遂宁市| 科尔| 新化县| 宕昌县| 兴义市| 长治县| 北碚区| 马山县| 合阳县| 河北省| 金坛市| 孟州市| 南岸区| 阿巴嘎旗| 华蓥市| 澄城县| 乌恰县| 航空| 怀安县| 阿坝|