ECMAScript6(二)

數據結構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的排列順序是按照添加順序進行排列的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章