اذهب إلى المحتوى

السؤال

نشر (معدل)

Write a function that takes an array of numbers as input and returns a new array with only the even numbers.

بعد ساعتين تفكير عميق وانسجام طلع معي هاد الحل ، شو رأيكون؟

وسؤال تاني من بعد اذنكون ... عم ادرب على مبادئ جافا سكريبت بس عم قضي وقت طويل لاعرف الحل واوقات ما عم اعرف ، وبعد ما شوف الحل بيطلع ما صعب كتير ، هل بيعني انو الباك إيند شي صعب عليي ولا شيء عادي بالمراحل الأولى للتعلم .

شكرا.

 function evenNumbers (...numbers) {
      for(i=0;i<=numbers.length;i++){
          if(arguments[i]%2==0)
      console.log(arguments[i])  }  
    };
    evenNumbers(2,4,6,7,9,8,11,10)

 

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • 0
نشر

الكود المعطى يحاول إنشاء دالة تسمى evenNumbers تستقبل متغيرات عددية باستخدام معامل Rest (...numbers). ومن ثم، يقوم بتكرار العناصر باستخدام حلقة for ويتحقق مما إذا كانت العناصر الفردية في الواقع أعدادًا زوجية. إذا كانت زوجية، يتم طباعتها باستخدام console.log.

ومع ذلك، يوجد بعض المشاكل في الكود. دعونا نوضحها:

  1. في حلقة الـ for، يجب تحديد القيمة الأولية للمتغير i باستخدام var وتحديد الشرط للحلقة بأن يكون i أقل من numbers.length، بدلاً من i <= numbers.length. لأن المصفوفات في JavaScript تعتبر قائمة بالفهارس، ويجب أن تبدأ الفهرس من 0. بتحديد الشرط كـ i <= numbers.length، ستحصل على حلقة زائدة للفهرس numbers.length الذي لا يشير إلى عنصر صحيح في المصفوفة.
  2. بدلاً من استخدام arguments[i]، يجب استخدام numbers[i]، حيث أن المتغير numbers هو المصفوفة التي تحتوي على الأرقام الممررة كمعاملات للدالة. arguments هو كائن خاص يحتوي على جميع المعاملات الممررة للدالة، ولكن هنا لا يُستخدم بشكل صحيح.
  3. بدلاً من طباعة العنصر الموجود في حالة زوجية باستخدام console.log، يجب تخزينه في مصفوفة جديدة تحتوي على الأرقام الزوجية.

وبناءً على ذلك، يمكن تصحيح الكود على النحو التالي:

function evenNumbers(...numbers) {
  var evenArray = [];

  for (var i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 === 0) {
      evenArray.push(numbers[i]);
    }
  }

  return evenArray;
}

var resultArray = evenNumbers(2, 4, 6, 7, 9, 8, 11, 10);
console.log(resultArray);

بعد تصحيح الكود، سيتم إنشاء مصفوفة جديدة تحتوي فقط على الأرقام الزوجية [2, 4, 6, 8, 10] وسيتم طباعتها باستخدام console.log.

  • 0
نشر

لغة جافاسكريبت هي لغة خاصة بالواجهة الأمامية في المقام الأول وليست خاصة بالواجهة الخلفية على وجه الخصوص، لكونها لغة تعمل في المتصفح، لكن من خلال بيئة عمل node.js تستطيع استخدامها في الواجهة الخلفية.

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

وبخصوص المسألة البرمجية فحلها بأبسط شكل هو كالتالي:

function getEvenNumbers(numbers) {
  return numbers.filter(number => number % 2 === 0);
}

حيث تستقبل الدالة مصفوفة من الأرقام كمدخل وتقوم بإرجاع مصفوفة جديدة تحتوي فقط على الأعداد الزوجية، وتستخدم الدالة filter لتصفية المصفوفة الأصلية بناءًا على شرط التحقق من أن العدد يمكن قسمته على 2 بدون باقي، مما يعني أن العدد زوجي أي كالتالي:

function getEvenNumbers(numbers) {
  return numbers.filter(number => number % 2 === 0);
}


const numbers = [1, 2, 3, 4, 5, 6];
const evenNumbers = getEvenNumbers(numbers);
console.log(evenNumbers); // ستقوم بطباعة [2, 4, 6] في وحدة التحكم

مقالات ودروس جافاسكريبت في أكاديمية حسوب

  • 0
نشر

من الطبيعي أن يستغرق الأمر وقتًا طويلاً للتعلم، خاصة في المراحل الأولى. كلما تدربت أكثر، كلما أصبح الأمر أسهل. استمر في المحاولة

فيما يلي بعض النصائح التي قد تساعدك على تعلم جافا سكريبت بشكل أسرع:

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

وأنصحك بشدة قراءة الإجابات التالية ستفيدك بلا شك

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...