التكرار على Map في Dart

التكرار على Map في Dart 🗺️🔁

عند التعامل مع Map في Dart، قد تحتاج إلى التكرار على المفاتيح، القيم، أو الأزواج (key-value). هناك عدة طرق للقيام بذلك، وسنوضحها جميعًا مع أمثلة عملية.


1. التكرار باستخدام forEach()

🔹 تُستخدم forEach() لتنفيذ دالة على كل عنصر داخل Map.

مثال:

dartنسختحريرvoid main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};

  students.forEach((key, value) {
    print('$key حصل على درجة: $value');
  });
}

🔹 الناتج:

nginxنسختحريرAli حصل على درجة: 90
Sara حصل على درجة: 85
Omar حصل على درجة: 78

2. التكرار باستخدام for-in على entries

🔹 تُستخدم entries للحصول على كائنات MapEntry والتي تحتوي على المفتاح والقيمة لكل عنصر.

مثال:

dartنسختحريرvoid main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};

  for (var entry in students.entries) {
    print('${entry.key} حصل على درجة: ${entry.value}');
  }
}

🔹 الناتج:

nginxنسختحريرAli حصل على درجة: 90
Sara حصل على درجة: 85
Omar حصل على درجة: 78

3. التكرار على keys فقط

🔹 يمكنك التكرار على المفاتيح فقط إذا كنت لا تحتاج إلى القيم.

مثال:

dartنسختحريرvoid main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};

  for (var key in students.keys) {
    print('الطالب: $key');
  }
}

🔹 الناتج:

makefileنسختحريرالطالب: Ali
الطالب: Sara
الطالب: Omar

4. التكرار على values فقط

🔹 يمكنك التكرار على القيم فقط إذا كنت لا تحتاج إلى المفاتيح.

مثال:

dartنسختحريرvoid main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};

  for (var value in students.values) {
    print('الدرجة: $value');
  }
}

🔹 الناتج:

makefileنسختحريرالدرجة: 90
الدرجة: 85
الدرجة: 78

5. التكرار باستخدام map()

🔹 تُستخدم map() لإنشاء Map جديدة بعد تعديل القيم أو المفاتيح.

مثال: زيادة جميع الدرجات بمقدار 5 درجات

dartنسختحريرvoid main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};

  var updatedStudents = students.map((key, value) => MapEntry(key, value + 5));

  print(updatedStudents);
}

🔹 الناتج:

yamlنسختحرير{Ali: 95, Sara: 90, Omar: 83}

6. التكرار باستخدام while

🔹 يمكنك تحويل Map إلى قائمة (List) ثم التكرار باستخدام while.

مثال:

dartنسختحريرvoid main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
  List<MapEntry<String, int>> entries = students.entries.toList();
  
  int i = 0;
  while (i < entries.length) {
    print('${entries[i].key} حصل على درجة: ${entries[i].value}');
    i++;
  }
}

🔹 الناتج:

nginxنسختحريرAli حصل على درجة: 90
Sara حصل على درجة: 85
Omar حصل على درجة: 78

7. التكرار باستخدام do-while

🔹 يتم تنفيذ الكود على الأقل مرة واحدة حتى لو كانت Map فارغة.

مثال:

dartنسختحريرvoid main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
  List<MapEntry<String, int>> entries = students.entries.toList();
  
  int i = 0;
  do {
    print('${entries[i].key} حصل على درجة: ${entries[i].value}');
    i++;
  } while (i < entries.length);
}

🔹 الناتج:

nginxنسختحريرAli حصل على درجة: 90
Sara حصل على درجة: 85
Omar حصل على درجة: 78

💡 الخلاصة

✅ يمكنك التكرار على Map بعدة طرق، حسب احتياجاتك:

  • forEach() إذا كنت تريد تنفيذ دالة مباشرة لكل عنصر.
  • for-in مع entries للحصول على كل من المفتاح والقيمة.
  • for-in مع keys أو values إذا كنت بحاجة إلى أحدهما فقط.
  • map() إذا كنت ترغب في إنشاء Map جديدة بناءً على التعديلات.
  • while و do-while إذا كنت بحاجة إلى تنفيذ الكود بأسلوب مختلف.