🗺️ دليلك الشامل لطرق Map الأساسية في جافا سكريبت

في الدرس السابق، تعرفنا على كائن Map في جافا سكريبت وكيف يختلف عن الكائن العادي. اليوم، سنتعمق أكثر ونتعلم الطرق الأساسية (Methods) التي تمكننا من التحكم في بيانات الـ Map بسهولة وكفاءة. هيا بنا نبدأ! 🚀


🔧 الأدوات الأساسية للتعامل مع Map

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

1. طريقة .set(): إضافة أو تعديل البيانات

تستخدم هذه الطريقة لإضافة زوج جديد من مفتاح-قيمة إلى الـ Map، أو لتعديل قيمة مفتاح موجود بالفعل.

// إنشاء Map جديد
let userMap = new Map();

// إضافة بيانات جديدة باستخدام .set(key, value)
userMap.set('name', 'أحمد');
userMap.set('age', 25);
userMap.set('job', 'مطور ويب');

console.log(userMap);
// الناتج: Map(3) { 'name' => 'أحمد', 'age' => 25, 'job' => 'مطور ويب' }

// تعديل قيمة مفتاح موجود
userMap.set('age', 26); // سن أحمد الآن 26
console.log(userMap.get('age')); // الناتج: 26

2. طريقة .get(): استرجاع البيانات

كيف نصل إلى القيمة المخزنة؟ نستخدم .get() ونمرر لها المفتاح الذي نريد معرفة قيمته.

let productMap = new Map();
productMap.set('id', 101);
productMap.set('title', 'لابتوب');
productMap.set('price', 3000);

// استرجاع قيمة المفتاح 'title'
let productTitle = productMap.get('title');
console.log(productTitle); // الناتج: 'لابتوب'

// ماذا يحدث إذا طلبنا مفتاحاً غير موجود؟
let unknownValue = productMap.get('color');
console.log(unknownValue); // الناتج: undefined
// لأن مفتاح 'color' غير مضاف إلى الـ Map

3. طريقة .has(): التحقق من وجود مفتاح

قبل أن نحاول استرجاع قيمة، من الجيد التحقق مما إذا كان المفتاح موجوداً أصلاً! هنا تأتي أهمية .has() التي ترجع true أو false.

let taskMap = new Map();
taskMap.set(1, 'write the code');
taskMap.set(2, 'test the program');
taskMap.set(3, 'publish the application');

// التحقق من وجود المفاتيح
console.log(taskMap.has(2)); // الناتج: true (موجود)
console.log(taskMap.has(5)); // الناتج: false (غير موجود)

// استخدام عملي: التحقق قبل الاسترجاع
if (taskMap.has(1)) {
    console.log('The first task is: ' + taskMap.get(1));
} else {
    console.log('The task is not found.');
}

4. طريقة .delete(): حذف بيانات محددة

تريد إزالة زوج مفتاح-قيمة محدد من الـ Map؟ استخدم .delete() ومرر لها المفتاح المراد حذفه.

let countryMap = new Map();
countryMap.set('SA', 'Saudi Arabia');
countryMap.set('EG', 'Egypt');
countryMap.set('AE', 'UAE');

console.log('Before deletion:', countryMap.has('EG')); // الناتج: true

// حذف المفتاح 'EG' وقيمته
let isDeleted = countryMap.delete('EG');
console.log('تم الحذف؟', isDeleted); // الناتج: true

console.log('بعد الحذف:', countryMap.has('EG')); // الناتج: false
console.log(countryMap); // الناتج: Map(2) { 'SA' => 'Saudi Arabia', 'AE' => 'UAE' }

// محاولة حذف مفتاح غير موجود
console.log(countryMap.delete('US')); // الناتج: false

5. طريقة .clear(): مسح الـ Map بالكامل

هذه الطريقة بسيطة وقوية! تزيل جميع البيانات من داخل الـ Map دفعة واحدة، تاركةً إياه فارغاً.

let cartMap = new Map();
cartMap.set('apple', 5);
cartMap.set('bread', 2);
cartMap.set('milk', 1);

console.log('The cart before clearing:', cartMap);
console.log('The size of the cart:', cartMap.size); // سنتعلمها بعد قليل!

// مسح كل محتويات الـ Map
cartMap.clear();

console.log('The cart after clearing:', cartMap); // الناتج: Map(0) {}
console.log('The size of the cart now:', cartMap.size); // الناتج: 0

6. خاصية .size: معرفة عدد العناصر

هذه ليست طريقة (method) بل خاصية (property). تعطينا عدد أزواج مفتاح-قيمة المخزنة في الـ Map بشكل فوري.

let classMap = new Map();
classMap.set('student1', 'Fatima');
classMap.set('student2', 'Khaled');
classMap.set('student3', 'Reem');

// معرفة عدد الطلاب (عدد العناصر)
let numberOfStudents = classMap.size;
console.log('Number of students in the class:', numberOfStudents); // الناتج: 3

// بعد إضافة طالب جديد
classMap.set('student4', 'Zaid');
console.log('Number of students now:', classMap.size); // الناتج: 4

// بعد حذف طالب
classMap.delete('student2');
console.log('Number of students after deletion:', classMap.size); // الناتج: 3

💡 خلاصة الدرس: أدواتك الجديدة للتحكم في Map

تعلمنا اليوم مجموعة الطرق الأساسية التي تتحكم في دورة حياة البيانات داخل كائن Map:

  • .set(key, value) ➕ لإضافة أو تعديل البيانات.
  • .get(key) 🔍 لاسترجاع قيمة مفتاح معين.
  • .has(key) ❓ للتحقق من وجود المفتاح.
  • .delete(key) 🗑️ لحذف عنصر محدد.
  • .clear() 🧹 لمسح جميع البيانات.
  • .size 📊 لمعرفة عدد العناصر بشكل فوري.

باستخدام هذه الأدوات البسيطة والقوية، أصبح بإمكانك بناء وتنظيم مجموعات بيانات معقدة بكفاءة وسهولة. تذكر أن القوة الحقيقية لـ Map تكمن في تنوع أنواع المفاتيح (نصوص، أرقام، كائنات...) وهو ما تعلمناه سابقاً.