問題:在JavaScript 中,可以建立一個模擬集合行為的資料結構,提供具有以下功能:
實現這種類似集合的功能的最佳方法是什麼?使用一個對象,並且鍵存儲屬性且值全部設置為 true,這是合理的解決方案嗎?
答案:
在 ES6 環境中,您可以利用內建 Set 對象,它提供了所有所需的功能。
對於ES5 及以下版本:
使用物件:
建立一個帶有代表值的鍵且始終設定為true 的物件可以用於簡單的任務,但它有其限制。例如,您需要使用 if (obj[key]) 而不是更簡潔的 if (key in obj) 檢查真實性。此外,這種方法將所有鍵強制為字串,如果您同時擁有應該表現不同的數字鍵和字串鍵,則會出現問題。
考慮這個修改後的基於物件的解決方案,它可以解決其中一些問題:
// create empty object var obj = {}; // or create an object with some items already in it var obj = { "1": true, "2": true, "3": true, "9": true }; // Question 1: Is A in the list? if (Object.prototype.hasOwnProperty.call(obj, A)) // put code here // Question 2: Delete 'A' from the list if it's there delete obj[A]; // Question 3: Add 'A' to the list if it's not already there obj[A] = true;
預先建構的集合物件:
如果您喜歡現成的解決方案,您可以使用預先建構的集合對象,例如miniSet 或更功能豐富的集合物件。它們提供了一個簡單的介面來執行集合操作。
ES6 Set Polyfill:
為了實現 ES6 相容性,您可以使用像 ES6 Set polyfill 這樣的 Polyfill。這允許您編寫可在 IE7 環境中運行的 ES6 相容程式碼,但它並不能完全體現原生 ES6 Set 物件的易用性。
以上是如何在 JavaScript 中實作類似集合的功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!