1. 程式人生 > >js遍歷集合(Array,Map,Set)

js遍歷集合(Array,Map,Set)

Array可以使用下標,Map和Set不能使用下標,ES6引入了iterable型別,Array,Map,Set都屬於iterable型別,它們可以使用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'
}

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x of a) {
    alert(x); // 'A', 'B', 'C'
}

>更好的方式:iterable內建的forEach方法:
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
    // element: 指向當前元素的值
    // index: 指向當前索引
    // array: 指向Array物件本身
    alert(element);//'A','B','C'
});

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
    alert("引數1="+element+",引數2="+sameElement);
});
//引數1=A,引數2=A
//引數1=B,引數2=B
//引數1=C,引數2=C

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

本文參考了這個文章:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143450082788640f82a480be8481a8ce8272951a40970000

相關推薦

js集合Array,Map,Set

Array可以使用下標,Map和Set不能使用下標,ES6引入了iterable型別,Array,Map,Set都屬於iterable型別,它們可以使用for...of迴圈來遍歷:var a = ['

jsp 頁面中用struts2 標籤集合list map

1,list: public class ListTestAction extends ActionSupport { private List<String> list1; private List<User> list2;

2018-6-3_《JS方法12個

turn undefine map defined ever fin asc dex ole /* 12個遍歷方法: 1. forEach ES5 2. every ES5 3. some ES5 4. filter ES5 5. map ES5 6. redu

js函式forEach()、map()、every()和some()的區別例項

forEach()、map()、every()和some()的聯絡和區別 map() array.map(function(currentValue,currentIndex,array) {}

Java-集合 list物件進行指定位置插入、刪除、迭代、輸出具體習題講解

原題: 建立一個 List,在 List 中增加三個工人,基本資訊如下: 姓名   年齡    工資 zhang3 18      3000 li4    25      3500 wang5 22       3200 工人有一個行為work。在 li4 之前

集合List、Set

特性 完成 index cas ren mil public 決定 void 第19天 集合 第1章 List接口 我們掌握了Collection接口的使用後,再來看看Collection接口中的子類,他們都具備那些特性呢? 接下來,我們一起學習Collection中的常用

樹的三種方式C語言實現

//************************************************************************* // 【前序】遍歷演算法 //二叉樹不空,先訪問根結點,然後前序遍歷左子樹,再前序遍歷右子樹 //***********************

圖及演算法----演算法迭代實現

1. 圖的遍歷 2. 3.   class Graph: def __init__(self): self.graph: Dict[str, List[str]] = defaultdict(list) def addEdge(self,

圖的廣度優先BFS鄰接矩陣實現c語言

廣度優先遍歷也叫廣度優先搜尋(Breadth First Search)。它的遍歷規則:先訪問完當前頂點的所有鄰接點。先訪問的頂點的鄰接點先於後訪問頂點的鄰接點被訪問。演算法思想:使用佇列的資料結構(FIFO (First In First Out)),將一個頂點加入佇列,然

Java中的集合List和Set

Java容器類主要是為了“儲存物件”,並將其劃分為兩個不同的概念:Collection,獨立元素的集合,這些元素都服從一條或多條規則,如List必須按照插入順序儲存元素,Set不能有重複元素,Queue按照排隊規則來確定物件的順序。Map形成一組“鍵值對”物件,允許你使用鍵

圖的深度優先DFS鄰接表實現c語言

要實現該演算法首先要知道鄰接表的概念。鄰接表是一種常用的圖的儲存結構,它的結構特點是:頂點由一個一維陣列儲存;鄰接點用連結串列儲存相比於單純用陣列實現的鄰接矩陣,鄰接表可以避免空間浪費其圖解如下:firstedge指向邊表第一個結點。邊表的adjvex的值代表與V0頂點有邊的

圖的深度優先DFS 鄰接矩陣實現 c語言

圖的遍歷是指從圖中的某一頂點出發,按照一定的策略訪問圖中的每一個頂點。每個頂點有且只能被訪問一次。深度優先遍歷也叫深度優先搜尋(Depth First Search)。它的遍歷規則:先選擇一個初始頂點,再規定一個方向,例如往右邊一直遍歷。於是就往右邊一直走,把訪問過的頂點做好

1.4.2python ID爬蟲每天一更

class errors bre headers cep import highlight 1.4 ber # -*- coding: utf-8 -*- ‘‘‘ Created on 2019年5月7日 @author: 薛衛衛 ‘‘‘ import i

【Java】集合List、SetMap、刪除、比較元素時的小陷阱

主要說明List,其餘兩個都一樣 一、漏網之魚-for迴圈遞增下標方式遍歷集合,並刪除元素 如果你用for迴圈遞增下標方式遍歷集合,在遍歷過程中刪除元素,你可能會遺漏了某些元素。說那麼說可能也說不清楚,看以下示例: import ja

Go語言基礎—— Go語言結構體、Go語言切片Slice、range、Go語言Map集合

Go語言結構體 Go 語言中陣列可以儲存同一型別的資料,但在結構體中我們可以為不同項定義不同的資料型別。 結構體是由一系列具有相同型別或不同型別的資料構成的資料集合。  結構體表示一項記錄,比如儲存圖書館的書籍記錄,每本書有以下屬性: Title :標題&nbs

javaSE (二十六map集合兩種方法、輸入字元,計算字元出現次數map實現、HashMap巢狀HashMap

1、map集合遍歷: map集合沒有iterator方法,所以不能直接迭代 直接看下面的程式碼和第一行的註解(加了註釋之後變黑看不清了,所以前面沒加註釋) 1、map的第一種遍歷:遍歷map的所有值:method1() 獲取所有的鍵的集合:Set<K> keySet()

Java基礎 - Map接口的實現類 : HashedMap / LinkedHashMap /TreeMap 的構造/修改// 集合視圖方法/雙向叠代輸出

順序 所有 collect int oid 代碼 修改 getc entryset Map筆記: import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要實現類) : HashedMap / Li

scala筆記-Array、ArrayBuffer以及陣列7

Array 在Scala中,Array代表的含義與Java中類似,也是長度不可改變的陣列。此外,由於Scala與Java都是執行在JVM中,雙方可以互相呼叫,因此Scala陣列的底層實際上是Java陣列。 例如字串陣列在底層就是Java的String[],整數陣列在底層就是Java的

【Javascript】JS陣列的三種方法:map、forEach、filter

前言   近一段時間,因為專案原因,會經常在前端對陣列進行遍歷、處理,JS自帶的遍歷方法有很多種,往往不加留意,就可能導致知識混亂的現象,並且其中還存在一些坑。前端時間在ediary中總結了js原生自帶的常用的對陣列遍歷處理的方法,分別為:map、forEach、filter,在講解知識點的同時,會類比相識

總結下List和Map方式日常總結

一.Map   public static void main(String[] args) { Map<Integer, Integer> map = new HashMap<>(); map.put(1, 2);