JavaScript 不提供內建Set 對象,但開發人員通常需要能夠透過快速尋找來儲存唯一的無序值,新增和刪除功能。
使用具有布林值的物件:
如同問題中所建議的,一個物件可以用來模仿一個集合。鍵代表值,且值都設為true(或任何非空值)。這種方法提供了快速的查找和刪除,但隨著鍵數量的增加,添加變得更慢。
ES6 Set Object:
如果您的環境支援 ES6(例如,現代瀏覽器或轉譯)代碼),您可以使用內建的 Set 物件。它對所有集合操作都具有出色的性能,並且還允許輕鬆迭代元素並避免字串強制。
Polyfills 和預先建構物件:
對於不支援的環境ES6,您可以使用像「ES6-Set」這樣的polyfill 或像「miniSet」或「set.js 」這樣的預構建對象,它們提供與ES6 Set 對象類似的功能。這些提供了一些優點,例如與舊版瀏覽器相容或較小的程式碼佔用空間。
實現詳細資訊:
使用物件:
const setObj = {};
setObj["item1"] = true;
if ("item1" in setObj) { // fast lookup
console.log("Item found");
}
delete setObj["item1"]; // fast deletion
使用ES6 Set物件:
const set = new Set();
set.add("item1");
if (set.has("item1")) { // fast lookup
console.log("Item found");
}
set.delete("item1"); // fast deletion
使用 Polyfill:
import Set from "es6-set";
const set = new Set(["item1", "item2"]);
console.log(...set.keys()); // easy iteration
使用預先建構的物件:
const miniSet = new MiniSet("item1", "item2");
if (miniSet.has("item1")) { // fast lookup
console.log("Item found");
}
miniSet.remove("item1"); // fast deletion
最佳選擇取決於特定要求和您環境中可用的支援。對於複雜或效能關鍵的應用程序,ES6 Set 物件是理想的選擇。否則,使用物件、polyfill 或預先建構的集合物件可以提供合理的解決方案。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3