數據結構Set
集合的基本概念:集合是由一組無序且唯一(既不能重複)的項組成,這個數據結構使用了與有限集合相同的數據概念,應用在計算機的數據結構中。
特點:key和value相同,沒有重複的value。
ES6 提供了數據結構Set,它類似於數組,但是成員的值都是唯一的,沒有重複的值
1.如何創建一個Set
const s = new Set([1,2,3,4])
console.log(s)// Set(4) {1, 2, 3, 4}
2.Set類的屬性
console.log(s.size)// 4
3.Set的方法
(1) set.add(value) 添加一個數據,返回Set結構本身
s.add('a').add('b')console.log(s) // Set(6) {1, 2, 3, 4, "a","b"}
(2)set.delete(value) 刪除指定數據,返回一個布爾值,表示刪除是否成功(刪除e成功返回true,刪除失敗返回false)
console.log(s.delete(4))// true
console.log(s)// Set(5) {1, 2, 3, "a","b"}
(3) set.has(value) 判斷該值是否爲set的成員,返回一個布爾值(如果存在就返回true,不存在返回false)
console.log(s.has(1));// true
(4) set.clear() 清除所有數據,沒有返回值。
s.clear();console.log(s) // Set(0) {}
(5) forEach() 使用回調函數遍歷每一個成員
s.forEach(function(value,key,set){
console.log(value+"hello");
})
console.log(s) // Set(5) {1, 2, 3, "a","b"}
Set 不允許有重複的數據
數據結構Map
字典:是用存儲不重複key的Hash結構。不同股集合(Set)的是,字典使用的是[鍵,值]的形式來存儲數據結構的。
JavaScript 的對象只能用字符串當作鍵。這個給它的使用帶來了很大的限制。
爲了解決這個問題,ES6提供了Map數據結構。他類似於對象,也是鍵值對的集合,但是“鍵”的範圍不限於字符串,各種類型的值(包括對象)都可以當作鍵。也就是說,object結構提供了“字符串-值”的對應。Map結構提供了“值-值”的對應,是一種更完善的Hash結構實現。如果你需要“鍵值對”的數據結構,Map比object更合適
1.如何創建一個Map
const map = new Map([
['a',1], ['b',2]
]);
console.log(map) // Map(2) {"a" => 1, "b" => 2}
2.Map 類的屬性
console.log(map.size) // 2
3.Map 類的方法
(1) set(key,value) 設置簡明key對應的鍵值爲value,然而返回整個Map結構,如果key已經有值了,則鍵值會被更新,否則就會生成新的鍵
map.set('hello','word').set('hi','word')
console.log(map) //Map(4) {"a" => 1, "b" => 2, "hello" => "word", "hi" => "word"}
map.set('hello','word').set('hi','word').set('hello','nice')
console.log(map) //Map(4) {"a" => 1, "b" => 2, "hello" => "nice", "hi" => "word"}
(2) get(key) get方法讀取key對應的鍵值,如果找不到key,返回undefined
console.log(map.get(‘a’)) // 1
console.log(map.get('d')) // undefined
(3) delete(key) 刪除某個鍵值,返回true,如果刪除失敗,返回false
console.log(map.delete('a')) // true
console.log(map.delete('a')) // false 前面已經刪除一次了,所以返回false
(4) has() 方法返回一個布爾值,表示某個鍵是否在當前Map對象之中;如果在返回true,如果不在,返回false
console.log(map.has(hi)) // true
(5) clear() 清除所有數據,沒有返回值
map.clear();
console.log(map) // Map(0) {}
(6) keys() 返回鍵名的遍歷器
(7) values() 返回鍵值的遍歷器
(8) entries() 返回鍵值對的遍歷器
(9) forEach() 使用回調函數遍歷每個成員
map.forEach(function(key,value,map){
console.log(key+':'+value) // 每一項對應的匹配
})
map 裏面的key的排列順序是按照添加順序進行排列的