iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
1
Software Development

使用JavaScript學習資料結構與演算法系列 第 13

Day13-來了解 Set 並實作它吧!

集合是一種資料順序沒有意義而且其資料不會有重複值的一種資料結構,在 JavaScript ES6 的規範中,我們可以透過 new Set() 來建立一個 set。

接著就來練習建立 set 和使用它的相關方法吧!
先建立一個 set:

let set1 = new Set([1, 2, 3]);

使用 add() 函式:

新增元素

set1.add(5);
console.log(set1); // Set { 1, 2, 3, 5 }

使用 delete() 函式:

刪除元素

set1.delete(2);
console.log(set1); // Set { 1, 3, 5 }

使用 size() 函式:

計算 set 共有幾個元素

console.log(set1.size); // 3

使用 has() 函式:

判斷 set 是否有某元素

console.log(set1.has(1)); // true
console.log(set1.has(6)); // false

使用 clear() 函式:

清除 set 子元素

console.log(set1.clear()); // undefined

使用 keys() 函式:

返回索引值,但 Set不分 索引值和資料值,因此此函式和 values() 結果相同。

set1 = new Set([4, 5, 6]);

for (let item of set1.keys()) {
  console.log(item);
}

// 4
// 5
// 6

使用 values() 函式:

返回資料值

set1 = new Set([4, 5, 6]);

for (let item of set1.values()) {
  console.log(item);
}

// 4
// 5
// 6

使用 entries() 函式:

返回索引和資料值

set1 = new Set([4, 5, 6]);

for (let item of set1.entries()) {
  console.log(item);
}

// [4, 4]
// [5, 5]
// [6, 6]

比較一下 Set vs. Array

Set:

  1. Keyed collections(按照插入的順序遍歷)
  2. 值不會重複
  3. 搜尋/刪除元素的時間複雜度比 Array 好
  4. 存取快速

Array:

  1. Indexed collections(索引進行排序)
  2. 可用來處理順序性的問題
  3. 存取快速

這次實作的完整程式碼在以下連結:
https://github.com/a90100/javascript-data-structure/blob/master/day13-set.js

介紹了 Set 之後,明天要來介紹擁有索引值(key)和資料值(value)的 Map。


上一篇
Day12-資料結構-樹(Tree)的一些操作方法
下一篇
Day14-來了解Map並實作它吧!
系列文
使用JavaScript學習資料結構與演算法30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言