لا توفر JavaScript كائن Set مضمنًا، لكن المطورين غالبًا ما يحتاجون إلى القدرة على تخزين قيم فريدة وغير مرتبة من خلال البحث السريع، إمكانيات الإضافة والحذف.
استخدام كائن ذو قيم منطقية:
كما هو مقترح في السؤال، يمكن استخدام كائن لتقليد مجموعة. تمثل المفاتيح القيم، ويتم تعيين القيم كلها على true (أو أي قيمة غير فارغة). يوفر هذا الأسلوب بحثًا وحذفًا سريعًا، لكن الإضافة تصبح أبطأ مع زيادة عدد المفاتيح.
كائن تعيين ES6:
إذا كانت بيئتك تدعم ES6 (على سبيل المثال، المتصفحات الحديثة أو المترجمة code)، يمكنك استخدام كائن Set المدمج. يتمتع بأداء ممتاز لجميع العمليات المحددة ويسمح أيضًا بالتكرار السهل على العناصر وتجنب إكراه السلسلة.
Polyfills والكائنات المبنية مسبقًا:
للبيئات التي لا تدعم ES6، يمكنك استخدام polyfills مثل "ES6-Set" أو الكائنات المعدة مسبقًا مثل "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:
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