JavaScript Fundamentals

خرائط التجزئة في جافاسكريبت: الكائنات مقابل كائن الخريطة

Spread the love

خرائط التجزئة في جافا سكريبت: الكائنات مقابل كائن الخريطة

لا تحتوي جافا سكريبت على ما يعادل “خريطة التجزئة” مباشرةً كما هو الحال في بعض اللغات الأخرى. ومع ذلك، يمكننا تحقيق وظائف مماثلة باستخدام طريقتين أساسيتين: كائنات جافا سكريبت العادية وكائن Map المدمج. تتناول هذه المقالة كلاً منهما، مع مقارنة نقاط القوة والضعف لمساعدتك في اختيار النهج الأنسب لاحتياجاتك.

جدول المحتويات

استخدام الكائنات كخرائط تجزئة

يمكن أن تعمل كائنات جافا سكريبت كخرائط تجزئة بسيطة. فهي تستخدم مفاتيح نصية للوصول إلى القيم المرتبطة. هذا النهج بسيط ولكنه له قيود.

مثال:


const myHashMap = {}; // إنشاء كائن فارغ

// إدخال أزواج المفتاح والقيمة
myHashMap.apple = 1;
myHashMap.banana = 2;
myHashMap.cherry = 3;

// الوصول إلى القيم
console.log(myHashMap.banana); // الإخراج: 2

// التحقق من وجود مفتاح
console.log('apple' in myHashMap); // الإخراج: true

// حذف زوج مفتاح-قيمة
delete myHashMap.banana;

// التكرار عبر أزواج المفتاح والقيمة (ملاحظة: الترتيب غير مضمون)
for (const key in myHashMap) {
  console.log(key, myHashMap[key]);
}

المزايا:

  • بسيط ومألوف لمطوري جافا سكريبت.
  • لا توجد تبعيات خارجية.

العيوب:

  • تقتصر المفاتيح على النصوص (أو القيم التي يتم تحويلها ضمنيًا إلى نصوص).
  • لا توجد خاصية حجم مدمجة؛ تحتاج إلى تتبع الحجم يدويًا.
  • يفتقر إلى الطرق المدمجة مثل get و set و has وما إلى ذلك.
  • ترتيب المفاتيح غير مضمون.

استخدام كائن Map

يوفر كائن Map (الذي تم تقديمه في ES6) حلاً أكثر قوة. يدعم أي نوع بيانات كمفتاح، ويتجنب مشكلات إكراه النوع، ويوفر طرقًا مدمجة للتلاعب بكفاءة.

مثال:


const myMap = new Map();

// إدخال أزواج المفتاح والقيمة
myMap.set("apple", 1);
myMap.set(123, "number"); // رقم كمفتاح
myMap.set({ a: 1 }, "object"); // كائن كمفتاح

// الوصول إلى القيم
console.log(myMap.get("apple")); // الإخراج: 1
console.log(myMap.get(123));     // الإخراج: "number"

// التحقق من وجود مفتاح
console.log(myMap.has("apple")); // الإخراج: true

// حذف زوج مفتاح-قيمة
myMap.delete("apple");

// الحصول على الحجم
console.log(myMap.size); // الإخراج: 2

// التكرار عبر أزواج المفتاح والقيمة (يتم الحفاظ على الترتيب)
for (const [key, value] of myMap) {
  console.log(key, value);
}

المزايا:

  • يدعم أي نوع بيانات كمفتاح.
  • يوفر طرقًا مدمجة (set و get و has و delete و size).
  • تكرار فعال باستخدام حلقات for...of.
  • يحافظ على ترتيب الإدخال.

العيوب:

  • يتطلب توافق ES6 (على الرغم من توفر برامج التعبئة).

الخلاصة

في حين أن كائنات جافا سكريبت العادية قد تكفي لسلوك يشبه خريطة التجزئة البسيطة، يُنصح عمومًا باستخدام كائن Map لميزاته وكفاءته العالية. ما لم تكن مقيدًا بشدة بتوافق المتصفح، فإن Map هو الخيار المفضل لمعظم مشاريع جافا سكريبت الحديثة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *