JavaScript >> Javascript 文檔 >  >> JavaScript

JavaScript 中的集合簡介

Set 是一種特殊類型的對象 在 ES6 中,它允許您創建唯一值的集合。每個值在集合中只出現一次。存儲在集合中的值可以是原始類型(字符串、數字、布爾值)或對象(對象字面量、數組)。

初始化集合

您可以使用 Set() 構造函數創建一個空集:

const birds = new Set();

或者,您可以將可迭代對象(如數組)傳遞給構造函數以初始化集合。可迭代對像中的所有元素都將添加到新集合中:

const birds = new Set(['🐦', '🦉', '🦆', '🦅']);

由於字符串是可迭代的,因此也可以傳入它們來創建一個集合:

const fruits = new Set('🍒🍇🍉🍓🍑');

如果可迭代對象包含任何重複項,它們將被自動刪除。詳細了解如何使用 Set 從數組中刪除重複項 在本指南中。

設置方法

您可以在 Set 上使用的一些方法 對像是 add() , has() , size , delete()clear()

const birds = new Set();

// add items
birds.add('🐦');
birds.add('🦉');
birds.add('🦆');
birds.add('🦅');

// check if item exists
birds.has('🦉'); // true
birds.has('🐥'); // false

// get items count
birds.size; // 4

// delete item
birds.delete('🦆'); // true
birds.delete('🦆'); // false - already deleted

// delete all items
birds.clear();

由於集合只能存儲唯一值,調用 add() 多次使用相同的值不會添加新項目:

const birds = new Set();
birds.add('🐦');
birds.add('🐦');
birds.add('🐦');

birds.size; // 1

console.log(birds); // Set(1) {"🐦"}

集合中的對象

我們還可以將對象字面量、數組、日期等不同的對像類型放入集合中:

const set = new Set(['🦉', '🌹']);

set.add(['🦉', '🍌']);
set.add({ name: 'John Doe', planet: 'Earth' });
set.add(new Date());

set.forEach(value => {
    console.log(value);
});

// 🦉
// 🌹
// ["🦉", "🍌"]
// {name: "John Doe", planet: "Earth"}
// Thu May 16 2019 12:47:09 GMT+0100

迭代集合

您可以使用 forEach() 迭代集合:

const flowers = new Set(['🌷', '🌹', '🌻', '🌸']);

flowers.forEach(flower => {
    console.log(`Hey ${flower}!`)
});

// Hey 🌷!
// Hey 🌹!
// Hey 🌻!
// Hey 🌸!

您也可以使用 for...of 循環遍歷集合:

for (const flower of flowers) {
    console.log(flower);
}

鍵和值

集合也有 keys()values() 方法就像地圖。唯一的例外是 keys() 方法只是 values() 的別名 方法。兩者都返回一個新的迭代器對象,其值的順序與添加到集合中的順序相同。我們還可以使用這些方法來迭代集合:

const fruits = new Set('🍒🍇🍉🍓🍑');

for (const k of fruits.keys()) {
    console.log(k);
}

for (const v of fruits.values()) {
    console.log(v);
}

我們還可以使用迭代器來逐個迭代設置值,如下所示:

const fruits = new Set('🍒🍇🍉');
const items = fruits.values();

console.log(items.next()); // {value: "🍒", done: false}
console.log(items.next()); // {value: "🍇", done: false}
console.log(items.next()); // {value: "🍉", done: true}

調用 next() 將每個項目返回為 {value: <value>, done: <boolean>} 對象直到迭代器完成,此時 donetrue .集合有另一種稱為 entries() 的方法 它也返回一個迭代器,但該值重複兩次:

const fruits = new Set('🍒🍇🍉');
const items = fruits.entries();

console.log(items.next()); // {value: ["🍒", "🍒"], done: false}

結論

Sets 是 ES6 中引入的一種新對像類型,它允許您創建值的集合。一個值既可以是原始值,也可以是對象,並且只能在集合中出現一次;它在收藏中是獨一無二的。您可以按照它們在集合中插入的順序遍歷這些值。

如果您想了解更多信息,請查看我們的 JavaScript 地圖指南。


Tutorial JavaScript 教程
  1. 使用條件斷點更好地調試

  2. 非常擅長 JavaScript 的有效方法

  3. JavaScript 的小詭計——Max 是負無窮大?什麼!

  4. 單元測試下載文件

  5. Imba - 提高開發人員生產力的 JavaScript 替代方案

  6. MongoDB 中的聚合

  7. 了解 ESLint 配置

  1. PatternFly 未來會是 Web 組件嗎?

  2. AngularJS $http 和 $resource

  3. Javascript 異步減少

  4. Firebase 函數無法獲取從 Angular9 中的簡單聯繫表單發送的請求值

  5. DOMAINE.nc:有趣的(碼頭工人)方式......和截圖比賽

  6. 防止瀏覽器緩存 AJAX 調用結果

  7. 打字稿編譯器

  1. 改進你的 React 代碼 - 自定義 Hooks

  2. 錯誤:類型 HTMLElement 上不存在屬性“選擇”

  3. 開始使用 Appwrite 並使用 Appwrite 和 React 創建登錄頁面! (第2部分)

  4. 讓 React Navigation 再次可訪問