عندما تعمل مع مجموعات من الكائنات ، مثل المصفوفات أو القوائم ، تحتاج أحيانا إلى الالتفاف حول كل عنصر من عناصر المجموعة وتنفيذ عمليات معينة على كل منها. يمكن أن يكون هذا مفيدا في العديد من السيناريوهات ، على سبيل المثال ، عند البحث عن عناصر معينة ، أو تطبيق دالة على جميع العناصر ، أو التصفية وفقا لمعيار معين. في هذه المقالة ، سننظر في عدة طرق لتجاوز الكائنات القابلة للتكرار بلغات البرمجة المختلفة.
في لغة برمجة بايثون ، يمكنك استخدام حلقة لاجتياز جميع عناصر المجموعة. في هذه الحالة ، يمكنك ببساطة تحديد اسم المتغير الذي سيتم استخدامه لتمثيل كل عنصر من عناصر المجموعة ، وتحديد المجموعة التي تريد تجاوزها. هنا مثال:
للعنصر في المجموعة:
تنفيذ عمليات معينة على عنصر
في لغة البرمجة جافا ، يمكنك أيضا استخدام لحلقة لاجتياز عناصر مجموعة. ومع ذلك ، في لغة جافا ، يعتني بك كائن التكرار لاجتياز عناصر المجموعة. يمكنك الحصول على كائن مكرر لمجموعة عن طريق استدعاء طريقة مكرر() على كائن المجموعة. ثم يمكنك استخدام حلقة بينما مع طريقة هاسنكست() من كائن مكرر للتحقق من العنصر التالي ، والطريقة التالية () للحصول على العنصر التالي. هنا مثال:
مكرر < نوع> مكرر = جمع.مكرر ();
بينما (مكرر.هاسنكست ()) {
}
في لغة البرمجة جافا سكريبت ، يمكنك استخدام ل...من حلقة لاجتياز عناصر مجموعة. تسمح لك هذه الحلقة بتجاوز عناصر كائن متكرر ، مثل صفيف أو سلسلة. هنا مثال:
ل (السماح عنصر جمع) {
قم بإجراء عمليات معينة على العنصر
}
اعتمادا على لغة البرمجة التي تستخدمها ، قد تكون هناك طرق أخرى لتجاوز عناصر المجموعة. بالنظر إلى هذه الطرق المختلفة ، ستتمكن من اختيار الخيار الأنسب لمهمتك.
- كيفية الحصول على جميع السجلات كعناصر من مجموعة كائن
- طرق عبور جميع السجلات
- 1. دورة ل
- 2. ال ل...من دورة
- 3. طريقة فوريش
- 4. التكرارات
- ميزات استخدام الحلقات لاجتياز
- من أجل حلقة
- في حين حلقة
- حلقة افعل بينما
- لكل دورة
- توصيات لتحسين عملية الزحف
- أمثلة على استخدام طرق مختلفة
- فوريش()
- خريطة الطريقة()
- طريقة تصفية()
- طريقة تقليل()
- طريقة ل...من
- الطريقة for...in
- طرق مسج
- اختيار أفضل حل بديل لمهمة محددة
- سؤال وجواب
- كيف يمكنني الذهاب من خلال كل إدخال في مجموعة الكائن?
- كيف يمكنني معالجة كل إدخال في مجموعة الكائن?
- كيف أذهب من خلال كافة الإدخالات في مجموعة كائن في جافا سكريبت?
- كيف يمكن تكرار جافا سكريبت على جميع العناصر في كائن وتنفيذ بعض الإجراءات عليها?
- كيف يمكنني تنفيذ عمليات معينة على كل عنصر في مجموعة الكائن في جافا سكريبت?
- كيف يمكن جافا سكريبت تجاوز كافة الإدخالات في كائن وتنفيذ بعض الإجراءات مع كل إدخال?
كيفية الحصول على جميع السجلات كعناصر من مجموعة كائن
يمكن أن يكون الحصول على جميع السجلات كعناصر لمجموعة كائن مفيدا عند العمل بكمية كبيرة من البيانات أو عند معالجة كل عنصر في المجموعة أمر ضروري.
في لغة برمجة جافا سكريبت ، يمكن استخدام طرق مختلفة للحصول على جميع السجلات كعناصر لمجموعة كائنات:
| السماح نيوراي = جمع.خريطة(وظيفة (البند) { |
|---|
عودة البند * 2; |
|
يعتمد اختيار الطريقة المناسبة على المتطلبات والميزات المحددة للمهمة ، لذلك ، يقترح قراءة وثائق لغة البرمجة المحددة للحصول على معلومات أكثر تفصيلا حول الطرق المتاحة للعمل مع مجموعات الكائنات.
| طرق عبور جميع السجلات |
|---|
واحدة من الطرق الأكثر شعبية لاجتياز جميع السجلات في مجموعة هو استخدام |
ألف حلقة
. هذا النهج يسمح لك بالتكرار بالتتابع من خلال كل عنصر من عناصر المجموعة باستخدام الفهارس.
| نموذج التعليمات البرمجية: |
|---|
تحتوي بعض لغات البرمجة على بناء جملة أكثر ملاءمة لاجتياز المجموعات. على سبيل المثال ، جافا سكريبت وبيثون لديها |
ألف ل...من حلقة
. يتكرر تلقائيا من خلال جميع عناصر المجموعة دون الحاجة إلى استخدام الفهارس.
نموذج التعليمات البرمجية:
ل (السماح عنصر جمع) {
// عنصر المعالجة
}
3. لكل طريقة
| توفر بعض لغات البرمجة طريقة مضمنة |
| فوريش |
| ، مما يسمح لك بتجاوز جميع عناصر المجموعة وأداء وظيفة محددة لكل عنصر. |
مثال على الكود:
جمع.فوريش(وظيفة (عنصر) {
// عنصر عنصر المعالجة
| }); |
| 4. التكرارات |
| تدعم بعض لغات البرمجة واجهة مكرر خاصة تتيح لك استرداد عناصر المجموعة بالتتابع. يوفر المكرر طرقا للانتقال إلى العنصر التالي والتحقق مما إذا كان هناك المزيد من العناصر للزحف إليها. |
| نموذج التعليمات البرمجية: |
| مكرر مكرر = مجموعة.مكرر (); |
بينما (مكرر.هاسنكست ()) {
عنصر الكائن = مكرر.التالي();
// معالجة العنصر
| } |
| اختر الطريقة المناسبة ، اعتمادا على لغة البرمجة والمهمة ، وتجاوز جميع الإدخالات في مجموعة الكائنات بنجاح. |
| ميزات استخدام الحلقات لاجتياز |
| عند العمل مع مجموعات الكائنات ، من الضروري استخدام الحلقات لاجتياز جميع السجلات. يتيح لك ذلك معالجة كل عنصر من عناصر المجموعة بالتتابع وإجراء العمليات اللازمة والحصول على البيانات اللازمة. |
| لغات البرمجة غالبا ما تستخدم أنواع مختلفة من الحلقات ، مثل ل ، في حين ، دو في حين ، و فوريتش الحلقات. كل من هذه الحلقات لها ميزات الاستخدام الخاصة بها عند عبور عناصر المجموعة. |
من أجل حلقة
توفر الحلقة القدرة على تحديد العدد الدقيق للتكرار وتحديد خطوة التكرار بشكل صريح. هذا يجعلها ملائمة للعمل مع المجموعات التي تحتوي على عدد معروف من العناصر.
مثال على استخدام حلقة:
| إلى عن على (الباحث الأول = 0; أنا < جمع.الطول ؛ أنا {) { |
| // تنفيذ العمليات مع عناصر التجميع |
| } |
بينما حلقة
في حين حلقة يسمح لك لتكرار طالما أن الشرط المحدد هو الصحيح. عند استخدام حلقة أثناء لاجتياز مجموعة ، يجب عليك تحديد شرط إيقاف الحلقة بشكل صريح.
مثال على استخدام حلقة في حين:
- الباحث الأول = 0;
- في حين (أنا < جمع . الطول) {
- // تنفيذ العمليات مع العناصر
- من المجموعة الأولى;
- }
- افعل بينما حلقة
حلقة دو في حين يعمل مثل حلقة في حين ، ولكن يتحقق الشرط للحقيقة بعد كل تكرار. وهذا يعني أنه سيتم تنفيذ حلقة دو في حين مرة واحدة على الأقل ، بغض النظر عن الشرط.
مثال على استخدام حلقة افعل بينما:
الباحث الأول = 0;
هل {
// تنفيذ العمليات مع العناصر
من المجموعة الأولى;
} بينما (أنا < جمع . الطول);
لكل دورة
تم تصميم حلقة فوريش خصيصا للعمل مع المجموعات. يجتاز تلقائيا جميع عناصر المجموعة ولا يتطلب شروطا أو متغيرات إضافية للتكرار.
مثال على استخدام حلقة فوريش:
ل (عنصر الكائن: مجموعة) {
// تنفيذ العمليات مع عناصر التجميع
}
عند استخدام الحلقات لاجتياز المجموعات ، من الضروري مراعاة تفاصيل كل نوع محدد من الحلقات واختيار الخيار الأنسب اعتمادا على المهمة المطروحة.
توصيات لتحسين عملية الزحف
عند العمل مع مجموعة من الكائنات وعبور كل إدخال فيها ، قد يكون من الضروري تحسين العملية. قد يكون هذا مناسبا في حالة الكميات الكبيرة من البيانات أو متطلبات الأداء.
استخدم التكرارات. تسمح لك التكرارات بالحصول على العنصر التالي من المجموعة دون معرفة تنفيذها الداخلي. إنها تسمح لك بالتنقل عبر عناصر المجموعة بالتتابع وتوفر طريقة أكثر مرونة وتحسينا للوصول إلى البيانات.
تحسين الوصول إلى الذاكرة. يمكن أن يؤدي الوصول المتكرر إلى الذاكرة إلى إبطاء عملية الزحف بشكل كبير. حاول تقليل عدد عمليات الوصول إلى الذاكرة ، على سبيل المثال ، عن طريق تخزين نتائج الوصول في متغيرات مؤقتة.
استخدم التنفيذ المؤجل. إذا كانت معالجة كل سجل في المجموعة تتطلب حسابات طويلة أو الوصول إلى موارد خارجية ، فيمكنك استخدام التنفيذ المؤجل لتسريع عملية الزحف. في هذه الحالة ، تتم معالجة التسجيل فقط في وقت الوصول إليه.
تحسين العبارات الشرطية. إذا كانت هناك حاجة إلى تنفيذ العبارات الشرطية أثناء اجتياز المجموعة ، فحاول تحسين استخدامها. على سبيل المثال ، يمكنك استخدام عوامل التشغيل المنطقية لدمج الشروط أو إعادة صياغة عوامل التشغيل الشرطية لتقليل عدد عمليات التحقق.
استخدام خاصية تعدد. إذا كان ذلك ممكنا ، يمكنك موازاة عملية اجتياز باستخدام المواضيع متعددة. سيؤدي ذلك إلى زيادة الأداء وتسريع الزحف.
تحسين الوصول إلى قاعدة البيانات. إذا تم تخزين البيانات في قاعدة بيانات ، فقد يكون الوصول إليها بطيئا. حاول استخدام الاستعلامات المحسنة أو التخزين المؤقت للبيانات أو تقنيات أخرى لتسريع الوصول إلى قاعدة البيانات.
يرجى ملاحظة أن تحسين عملية الزحف قد يتطلب تنازلات ويعتمد على الموقف المحدد. من المهم تقييم مكاسب الأداء المحتملة من التحسين ومقارنتها بموضوعية مع التكاليف المحتملة لتطوير التعليمات البرمجية المحسنة والحفاظ عليها.
أمثلة على استخدام طرق مختلفة
يقدم هذا القسم أمثلة على استخدام طرق مختلفة للزحف إلى جميع السجلات كعناصر لمجموعة كائنات.
تسمح لك طريقة فوريش () بتنفيذ إجراء محدد لكل عنصر من عناصر المجموعة. يوجد أدناه مثال على استخدام هذه الطريقة لصفيف:
أرقام كونست = [1, 2, 3, 4, 5];
أرقام.فوريتش(وظيفة (عدد) {
وحدة التحكم.سجل (رقم);
});
ستكون نتيجة تنفيذ هذا الرمز إخراج جميع عناصر صفيف الأرقام إلى وحدة التحكم.
تسمح لك طريقة الخريطة () بإنشاء مصفوفة جديدة بناء على مصفوفة موجودة من خلال تطبيق إجراء محدد على كل عنصر من عناصر المجموعة. يوجد أدناه مثال على استخدام هذه الطريقة لصفيف:
أرقام كونست = [1, 2, 3, 4, 5];
عدد مضاعف = أرقام . خريطة(وظيفة (رقم) {
رقم الإرجاع * 2;
});
وحدة التحكم.سجل (أرقام مزدوجة);
ستكون نتيجة تنفيذ هذا الرمز إنشاء مصفوفة أرقام مزدوجة جديدة ، حيث سيتم ضرب كل عنصر من عناصر مصفوفة الأرقام الأصلية في 2.
طريقة المرشح ()
تسمح لك طريقة التصفية () بإنشاء مصفوفة جديدة بناء على مصفوفة موجودة ، بما في ذلك العناصر التي اجتازت شرطا معينا فقط. يوجد أدناه مثال على استخدام هذه الطريقة لصفيف:
أرقام كونست = [1, 2, 3, 4, 5];
كونست إيفينومبرز = أرقام.مرشح(وظيفة (رقم) {
رقم الإرجاع % 2 = = = 0;
});
وحدة التحكم.سجل (حتى الأرقام);
ستكون نتيجة تنفيذ هذا الرمز إنشاء حدث جديدصفيف الأرقام ، والذي سيحتوي فقط على عناصر متساوية من مصفوفة الأرقام الأصلية.
تسمح لك طريقة التخفيض () بتنفيذ إجراء محدد على جميع عناصر المجموعة ، وإرجاع قيمة واحدة. يوجد أدناه مثال على استخدام هذه الطريقة لصفيف:
أرقام كونست = [1, 2, 3, 4, 5];
كونست سوم = أرقام.تقليل(وظيفة (المجموع ، العدد) {
إجمالي الإرجاع + الرقم;
}, 0);
- وحدة التحكم.سجل (مجموع);
- ستكون نتيجة تنفيذ هذا الرمز مجموع جميع عناصر مصفوفة الأرقام الأصلية ، والتي سيتم تخزينها في متغير المجموع.
- ال ل...من الطريقة
- ال ل...من طريقة يسمح لك بالتكرار من خلال جميع عناصر المجموعة ، بما في ذلك المصفوفات والسلاسل وغيرها من الكائنات القابلة للتكرار. يوجد أدناه مثال على استخدام هذه الطريقة لصفيف:
أرقام كونست = [1, 2, 3, 4, 5];
ل (السماح لعدد من الأرقام) {
وحدة التحكم.سجل (رقم);
}
ستكون نتيجة تنفيذ هذا الرمز إخراج جميع عناصر صفيف الأرقام إلى وحدة التحكم.
الطريقة for...in
الطريقة for...in يسمح لك بالتكرار من خلال جميع خصائص الكائن. يوجد أدناه مثال على استخدام هذه الطريقة لكائن:
كونست شخص = {
الاسم:'جون',
العمر: 30,
المدينة: 'نيويورك'
};
ل (دع المفتاح شخصيا) {
وحدة التحكم.سجل (مفتاح+': '+ شخص [مفتاح]);
}
ستكون نتيجة تنفيذ هذا الرمز إخراج جميع خصائص كائن الشخص في المفتاح: تنسيق القيمة.
طرق مسج
لديها مسج أيضا أساليبها الخاصة للعمل مع مجموعات من عناصر دوم. فيما يلي أمثلة على الطرق الأكثر شيوعا:
.كل() — يسمح لك بتنفيذ إجراء محدد لكل عنصر من عناصر المجموعة;
.خريطة () - يسمح لك بإنشاء مجموعة جديدة بناء على مجموعة موجودة من خلال تطبيق إجراء معين;
.تصفية () - يسمح لك بإنشاء مجموعة جديدة تتضمن فقط العناصر التي اجتازت شرطا معينا;
.تقليل—) - يسمح لك بتنفيذ إجراء محدد على جميع عناصر المجموعة ، وإرجاع قيمة واحدة.
أمثلة على استخدام هذه الأساليب في مسج تبدو مثل هذا:
li ('لي').كل(وظيفة (فهرس ، عنصر) {
وحدة التحكم.سجل (فهرس+': '+ $(عنصر).النص());
});
كونست تكستاراي = li ('لي').خريطة (وظيفة () {
(هذا).نص();
}).الحصول على();
كونست فيلتريديتمز = $('لي').تصفية (وظيفة () {
(هذا).هاسكلاس ('مختارة');
});
كونست سوم = li ('لي').تقليل(وظيفة (المجموع ، العنصر) {
إرجاع إجمالي + بارسينت (element (عنصر).النص () ، 10);
}, 0);
ستكون نتيجة تنفيذ هذه الرموز هي إخراج المعلومات حول كل عنصر من عناصر القائمة ، وإنشاء مصفوفة بقيم عناصر القائمة ، وإنشاء مجموعة جديدة تتضمن فقط العناصر المقابلة للشرط ، وحساب مجموع القيم الرقمية لعناصر القائمة.
اختيار أفضل حل بديل لمهمة محددة
عند العمل مع المجموعات أو هياكل البيانات ، غالبا ما يكون من الضروري تجاوز جميع عناصرها. اعتمادا على المهمة المحددة ، يمكنك استخدام العديد من الحلول ، لكل منها خصائصه الخاصة وهو مصمم لمواقف معينة.