2014-06-06 142 views

回答

27

假設您正在討論ES6類型,即使Set可能使用Map實現,它們也不是相同的數據結構。

您對Map的定義是正確的,但Set是一個唯一值的集合,與可以重複的數組不同。

var array = [1, 2, 3, 3]; 

var set = new Set(array); // Will have [1, 2, 3] 
assert(set.size, 3); 

var map = new Map(); 
map.set('a', 1); 
map.set('b', 2); 
map.set('c', 3); 
map.set('C', 3); 
map.set('a', 4); // Has: a, 4; b, 2; c: 3, C: 3 
assert(map.size, 4); 
+9

我認爲值得一提的是Set不是一個鍵值存儲。它也不同於數組,因爲它沒有排序。 –

+0

我也想添加:https://medium.com/ecmascript-2015/es6-set-map-weak-a2aeb7e2d384 – Thomas

2

開發人員通常只在需要地圖時使用常規JavaScript對象。

var obj = {}; 
obj.name= "Anand Deep Singh"; 
console.log(obj.name); //logs "Anand Deep Singh" 

同樣在ES6,我們可以使用常規的對象。

var map = new Map(); 
map.set("name","Anand Deep Singh"); 
console.log(map.get("name")); //logs "Anand Deep Singh" 

,但明顯的是一個地圖不與文本對象語法創建,一個使用設置得到方法訪問數據

它有一個具有方法來檢查的對象是否存在,刪除方法刪除對象和明確方法清除整個對象的關鍵。

Set是值的唯一列表。這只是一個獨特的列表。

var set = new Set(["a", "a","e", "b", "c", "b", "b", "b", "d"]); 
console.log(set); //logs Set {"a", "e", "b", "c", "d"} 

Set不能像數組那樣訪問,它提供的方法與Map相同。