البرمجة

تجنب الـ undefined باستخدام دالة map

في كود الجافا سكريبت أعلاه، يتم تعريف دالة تسمى “range” التي تقوم بإنشاء مصفوفة من الأرقام من 0 إلى العدد الذي يتم تمريره كمعامل (في هذه الحالة هو 100)، ثم يتم استدعاء هذه الدالة وتخزين الناتج في المتغير “arr”.

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

بمعنى آخر، عندما تقوم بتعيين المتغير “arr” لنتيجة استدعاء دالة “forEach”، فإن قيمة “arr” ستكون “undefined” لأن “forEach” لا تعيد قيمة.

لحل هذه المشكلة، يمكنك استخدام دالة “map” بدلاً من “forEach”. فدالة “map” تعيد قيمة بعد تنفيذ الدالة المحددة على كل عنصر في المصفوفة. وهكذا، يمكنك تخزين النتيجة في “arr” كما ترغب. وهنا الكود مع التعديلات:

javascript
var range = function (max) { var result = []; var index; for (index = 0; index <= max; index = index + 1) { result.push(index); } return result; }; var arr = range(100).map(function (number) { if (number % 3 == 0) { return "c"; } else { return number; } }); console.log(arr);

باستخدام دالة “map” بدلاً من “forEach”، ستحصل على النتيجة المتوقعة، حيث ستحتوي “arr” على المصفوفة المعدلة بشكل صحيح، وستقوم “console.log” بطباعة القيمة المتوقعة بدلاً من “undefined”.

المزيد من المعلومات

بالطبع، دعني أواصل توضيح الموضوع في المقال:

عند استخدام دالة “map” بدلاً من “forEach”، يحدث تغيير في كيفية التعامل مع البيانات. بدلاً من تنفيذ دالة معينة على كل عنصر في المصفوفة وتجاهل القيم التي تُعيد، فإن دالة “map” تقوم بتطبيق الدالة المعطاة على كل عنصر، وتعيد قيمة جديدة تمثل العنصر المعالج.

في الكود المعدل، قمنا بتطبيق دالة التحويل “map” على المصفوفة التي تم إنشاؤها باستخدام الدالة “range”. ثم قمنا بفحص كل عنصر في المصفوفة ونعيد “c” بدلاً من الأرقام التي تقسم على 3 بدون بقية.

هذا يعني أنه بالنسبة لكل عنصر في المصفوفة، إذا كان يمكن قسمته على 3 بدون بقية، فسيتم استبداله بالقيمة “c”. أما بالنسبة للعناصر الأخرى التي لا تقسم على 3 بدون بقية، فستُحافظ دالة “map” على قيمتها الأصلية.

بهذه الطريقة، يمكننا التحكم في تحويل العناصر بشكل صحيح والحصول على المخرج المتوقع.

لتوضيح أكثر، إليك الشرح خطوة بخطوة:

  1. تنفيذ الدالة “range” التي تقوم بإنشاء مصفوفة تحتوي على الأرقام من 0 إلى 100.
  2. استخدام دالة “map” لتطبيق دالة التحويل على كل عنصر في المصفوفة.
  3. في كل تحويل، يتم فحص ما إذا كان العنصر يمكن قسمته على 3 بدون بقية. إذا كان الشرط متوافقًا، فسيتم استبدال العنصر بقيمة “c”.
  4. يتم إعادة المصفوفة المعدلة بشكل صحيح، مما يسمح لنا بالوصول إلى النتيجة المتوقعة.

وبهذا، يمكننا فهم كيفية حل مشكلة “undefined” والحصول على السلوك المطلوب بواسطة استخدام دالة “map” بدلاً من “forEach”.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر