1. 程式人生 > 實用技巧 >TypeScript Set型別

TypeScript Set型別

Set型別物件允許你儲存任何型別的唯一值,無論是原始值或者是物件引用。

// Set 型別例項化語法
new Set([iterable]);

// Set 型別例項化
let set1 = new Set();
let set2 = new Set([1, 2, 3]);
let set3 = new Set([1, 2, 3, 2, 1]);
console.log(set1); // => Set {}
console.log(set2); // => Set { 1, 2, 3 }
console.log(set3); // => Set { 1, 2, 3 }

Set型別例項的屬性與方法:

// Set 型別屬性與方法
Set.prototype.size                              // 返回Set物件的值的個數
Set.prototype.add(value)                        // 在Set物件尾部新增一個元素。返回該Set物件。
Set.prototype.clear()                           // 移除Set物件內的所有元素。
Set.prototype.delete(value)                     // 移除Set的中與這個值相等的元素
Set.prototype.entries()                         // 返回一個新的迭代器物件,該物件包含Set物件中的按插入順序排列的所有元素的值的陣列。
Set.prototype.forEach(callbackFn[, thisArg])    // 按照插入順序,為Set物件中的每一個值呼叫一次callBackFn。
Set.prototype.has(value)                        // 返回一個布林值,表示該值在Set中存在與否。
Set.prototype.keys()                            // 返回一個新的迭代器物件,該物件包含Set物件中的按插入順序排列的所有元素的值。
Set.prototype.values()                          // 返回一個新的迭代器物件,該物件包含Set物件中的按插入順序排列的所有元素的值。

Set 型別屬性與方法舉例:

//Set 例項
let set = new Set([1, 2, 3]);
console.log(set.size);      // =>3
set.add(4);                 //Set{1,2,3,4}
console.log(set.has(2));    // => true
set.delete(1);              //Set{2,3,4}
set.clear();                //Set{}

Set 型別迭代遍歷舉例:

//迭代整個set
let mySet = new Set([1, 2, 3]);
//按順序輸出:1,2,3
for (let item of mySet) console.log(item);
//按順序輸出:1,2,3
for (let item of mySet.keys()) console.log(item);
//按順序輸出:1,2,3
for (let item of mySet.values()) console.log(item);
//按順序輸出:1,2,3
//(鍵與值相等)
for (let [key, value] of mySet.entries()) console.log(key);
//按順序輸出:1,2,3
mySet.forEach(value => { console.log(value) });

Set型別與陣列型別互相轉換,舉例:

// Array 與 Set 互轉
let myArr = [1, 2, 3];
// 建立Set例項
let mySet = new Set(myArr); // Set { 1, 2, 3 }
// 解構為陣列
[...mySet];                 // [1, 2, 3]
// 返回陣列
Array.from(mySet);          // [1, 2, 3]

字串轉Set型別,利用 Set 為陣列去重,舉例:

// 字串轉 Set
var text = 'CHINA';
var mySet = new Set(text);  // Set {'C', 'H', 'I', 'N', 'A'}
console.log(mySet.size);    // => 5

// 陣列去重
const numbers = [1, 2, 2, 3, 3, 3, 4, 5, 4, 5, 1];
console.log([...new Set(numbers)]); // => [1, 2, 3, 4, 5]