بنية بيانات Map JavaScript

اكتشف بنية بيانات الخريطة المقدمة في ES6 لربط البيانات بالمفاتيح. قبل تقديمه ، استخدم الناس الأشياء عمومًا كخرائط ، من خلال ربط بعض الأشياء أو القيمة بقيمة مفتاح معينة

ما هي الخريطة

تسمح بنية بيانات الخريطة بربط البيانات بمفتاح.

قبل ES6

ECMAScriptقدم 6 (يسمى أيضًا ES2015) بنية بيانات الخريطة إلىJavaScriptالعالم ، جنبًا إلى جنب معتعيين

قبل تقديمه ، استخدم الناس الأشياء عمومًا كخرائط ، من خلال ربط بعض الأشياء أو القيمة بقيمة رئيسية محددة:

const car = {}
car['color'] = 'red'
car.owner = 'Flavio'
console.log(car['color']) //red
console.log(car.color) //red
console.log(car.owner) //Flavio
console.log(car['owner']) //Flavio

أدخل الخريطة

قدم ES6 هيكل بيانات الخريطة ، مما يوفر لنا أداة مناسبة للتعامل مع هذا النوع من تنظيم البيانات.

يتم تهيئة الخريطة عن طريق استدعاء:

const m = new Map()

إضافة عناصر إلى الخريطة

يمكنك إضافة عناصر إلى الخريطة باستخدام ملفsetطريقة:

m.set('color', 'red')
m.set('age', 2)

الحصول على عنصر من الخريطة بالمفتاح

ويمكنك إخراج العناصر من الخريطة باستخدامget:

const color = m.get('color')
const age = m.get('age')

حذف عنصر من الخريطة بالمفتاح

استخدم الdelete()طريقة:

m.delete('color')

حذف كافة العناصر من الخريطة

استخدم الclear()طريقة:

m.clear()

تحقق مما إذا كانت الخريطة تحتوي على عنصر بمفتاح

استخدم الhas()طريقة:

const hasColor = m.has('color')

ابحث عن عدد العناصر في الخريطة

استخدم الsizeمنشأه:

const size = m.size

تهيئة الخريطة بالقيم

يمكنك تهيئة الخريطة بمجموعة من القيم:

const m = new Map([['color', 'red'], ['owner', 'Flavio'], ['age', 2]])

مفاتيح الخريطة

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

إذا حاولت الحصول على مفتاح غير موجود باستخدامget()خارج الخريطة ، سيعودundefined.

مواقف غريبة لن تجدها أبدًا في الحياة الواقعية

const m = new Map()
m.set(NaN, 'test')
m.get(NaN) //test
const m = new Map()
m.set(+0, 'test')
m.get(-0) //test

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

كرر على مفاتيح الخريطة

تقدم الخريطةkeys()الطريقة التي يمكننا استخدامها للتكرار على جميع المفاتيح:

for (const k of m.keys()) {
  console.log(k)
}

كرر على قيم الخريطة

يقدم كائن الخريطةvalues()الطريقة التي يمكننا استخدامها للتكرار على جميع القيم:

for (const v of m.values()) {
  console.log(v)
}

كرر على مفتاح الخريطة ، أزواج القيمة

يقدم كائن الخريطةentries()الطريقة التي يمكننا استخدامها للتكرار على جميع القيم:

for (const [k, v] of m.entries()) {
  console.log(k, v)
}

والتي يمكن تبسيطها إلى

for (const [k, v] of m) {
  console.log(k, v)
}

تحويل إلى مجموعة

تحويل مفاتيح الخريطة إلى مصفوفة

const a = [...m.keys()]

تحويل قيم الخريطة إلى مصفوفة

const a = [...m.values()]

خريطة ضعيفة

خريطة WeakMap هي نوع خاص من الخرائط.

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

فيما يلي الاختلافات الرئيسية:

  1. لا يمكنك التكرار على المفاتيح أو القيم (أو قيم المفاتيح) الخاصة بـ WeakMap
  2. لا يمكنك مسح جميع العناصر من WeakMap
  3. لا يمكنك التحقق من حجمه

يكشف WeakMap عن تلك الطرق ، التي تعادل أساليب الخريطة:

  • get(k)
  • set(k, v)
  • has(k)
  • delete(k)

حالات استخدام WeakMap أقل وضوحًا من تلك الموجودة في الخريطة ، وقد لا تجد أبدًا الحاجة إليها ، ولكن بشكل أساسي يمكن استخدامها لإنشاء ذاكرة تخزين مؤقت حساسة للذاكرة والتي لن تتداخل مع جمع البيانات المهملة ، أو للتغليف الدقيق وإخفاء المعلومات.


المزيد من دروس js: