التكرار على 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
إذا كنت بحاجة إلى تنفيذ الكود بأسلوب مختلف.