"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > SET في JavaScript (برنامج تعليمي للمبتدئين)

SET في JavaScript (برنامج تعليمي للمبتدئين)

تم النشر بتاريخ 2024-11-04
تصفح:835

SET in JavaScript (Tutorial for Beginners)

أهلاً،

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

ما هو الإعداد؟
المجموعة عبارة عن بنية بيانات تتيح لك تخزين قيم فريدة من أي نوع، سواء كانت قيمًا أولية أو مراجع كائنات. تسمح المجموعة بعمليات الإدراج والحذف والتحديث والحجم مع تعقيد الوقت O(1). مما يجعل التعيين أسرع وأكثر كفاءة.

تم تصميم المجموعات لتوفير أوقات وصول سريعة. يتم تنفيذها عادةً بطريقة تجعل البحث عن العناصر أسرع من مجرد التحقق من كل عنصر واحدًا تلو الآخر. يمكن أن يكون التنفيذ النموذجي عبارة عن جدول تجزئة (بحث O(1)) أو شجرة بحث (بحث O(log(N))).

النقاط الرئيسية

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

الطرق الأساسية

  1. إضافة: سيضيف عنصرًا إلى المجموعة. إذا كان العنصر موجودًا في المجموعة فلن يفعل شيئًا.
  2. has : سيعود صحيحًا إذا كان العنصر موجودًا في المجموعة وإلا فسيكون خطأ.
  3. الحجم: سيُرجع حجم المجموعة.
  4. delete : سيؤدي إلى إزالة العنصر من المجموعة.
  5. keys : تقوم طريقة .keys() في مجموعة JavaScript بإرجاع كائن مكرر جديد يحتوي على قيم المجموعة بالترتيب الذي تم إدراجها به.

أمثلة

// 1. Create a new Set and use the .add() method to add elements
const mySet = new Set();
mySet.add(10);
mySet.add(20);
mySet.add(30);

console.log(mySet); // Output: Set { 10, 20, 30 }

// 2. Check if the Set has a specific element using .has() method
console.log(mySet.has(20)); // Output: true
console.log(mySet.has(40)); // Output: false

// 3. Delete an element from the Set using .delete() method
mySet.delete(20);
console.log(mySet); // Output: Set { 10, 30 }

// 4. Iterate over the Set using .keys() method
// In Sets, .keys() and .values() do the same thing
for (const key of mySet.keys()) {
  console.log(key);
}
// Output:
// 10
// 30

// 5. Get the size of the Set using .size property
console.log(mySet.size); // Output: 2


مثال على مجموعة مع مشكلة Leetcode:

3. أطول سلسلة فرعية بدون أحرف مكررة

بالنظر إلى سلسلة s، ابحث عن طول أطول سلسلة فرعية دون تكرار الأحرف.

حل

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    let set = new Set();
    let ans = 0;
    let s_index = 0;
    for (let i = 0; i 



توضيح:
تستخدم الدالة lengthOfLongestSubstring تقنية النافذة المنزلقة مع Set للعثور على أطول سلسلة فرعية دون تكرار الأحرف:

  • توسيع النافذة: أضف أحرفًا إلى المجموعة إذا لم تكن موجودة بالفعل.
  • تقليص النافذة: قم بإزالة الأحرف من بداية النافذة عند العثور على نسخ مكررة، وضبط حجم النافذة.
  • طول التحديث: تتبع الحد الأقصى لطول السلسلة الفرعية بأحرف فريدة.
  • يضمن هذا النهج تعقيدًا زمنيًا فعالاً لـ O(N) من خلال معالجة كل حرف مرتين على الأكثر.

هذا كل شيء، إذا كان لديك أي شكوك أو أي اقتراح أو أي شيء فلا تتردد في إضافة تعليقات.

مصادر :
MDN (مجموعة)

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/yashrajxdev/set-data-structure-in-javascript-2e4i?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3