نُشر في

خريطة التجزئة في جافا سكريبت: أزواج مفتاح-قيمة ذات أداء عالٍ

الكتاب

لماذا الخرائط؟

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

ما هي الخريطة؟

الخريطة هي مجموعة من العناصر حيث يتم تخزين كل عنصر كزوج مفتاح، قيمة. يمكن أن تكون مفاتيح وقيم الخريطة أي قيمة (كلاهما كائنات وقيم بدائية). يكرر كائن الخريطة عناصره حسب ترتيب الإدراج - تُرجع حلقة for...of مصفوفة [مفتاح، قيمة] لكل تكرار.

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

طرق الخريطة وخصائصها

الطريقةالوصف
new Map()تُنشئ كائن خريطة جديد
set()تعيّن القيمة لمفتاح في خريطة
get()تُرجع القيمة لمفتاح
has()تُرجع قيمة منطقية تشير إلى ما إذا كان مفتاح موجود في خريطة
delete()تُزيل مفتاحًا من خريطة
clear()تُزيل جميع المفاتيح من خريطة
values()تُرجع كائن مُكرّر لقيم الخريطة
keys()تُرجع كائن مُكرّر لمفاتيح الخريطة
entries()تُرجع كائن مُكرّر لأزواج المفتاح والقيمة في الخريطة
forEach()تنفذ دالة مُقدمة لمرة واحدة لكل زوج مفتاح-قيمة في خريطة
الخاصيةالوصف
sizeتُرجع عدد أزواج المفتاح/القيمة في خريطة

مثال الخريطة

const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])

console.log(map.get('name')) // John
console.log(map.get('age')) // 30
console.log(map.get('isMarried')) // true
console.log(map.get('address')) // {city: 'New York', state: 'NY'}
console.log(map.get('hobbies')) // ['reading', 'writing', 'coding']

console.log(map.size) // 5

تكرار الخريطة

const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])

// تكرار المفاتيح
for (const key of map.keys()) {
  console.log(key)
}

// تكرار القيم
for (const value of map.values()) {
  console.log(value)
}

// تكرار أزواج المفتاح والقيمة
for (const [key, value] of map.entries()) {
  console.log(key, value)
}

// تكرار أزواج المفتاح والقيمة
map.forEach((value, key) => {
  console.log(key, value)
})

الخريطة مقابل الكائن

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

الخلاصة

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

نُشر في الأصل على: https://blog.imam.dev/blog/javascript-hashmap

المراجع

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

https://www.freecodecamp.org/news/what-is-a-javascript-map-what-are-the-differences-between-map-and-object-in-javascript/

https://www.geeksforgeeks.org/map-vs-object-javascript/