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

كيفية الحصول على مجموعة أكبر ثلاث أرقام في مصفوفة في جافاسكريبت JavaScript؟

Ola Mahmoud2

السؤال

ممكن مساعدة، أريد دالة يمكن تمرير قيمة لها وهذه القيمة عبارة مصفوفة من الأعداد ثم تقوم بإرجاع مجموع أكبر ثلاث اعداد في المصفوفة.

ليكن اسم الدالة عبارة عن sumThreeNumbers

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك أن تقوم بهذا من خلال عمل دالة getMaxThree والتالي تقوم بالبحث في المصفوفة وتُرجع أكبر ثلاثة أرقام فيها:

var numbersArray = [93, 17, 91, 91, 98, 33, 9, 38, 55, 78, 29, 81, 60, 91];

function getMaxThree(numbersArray) {
  // إرجاع المصفوفة كما هي إن كانت تحتوي على أقل من ثلاث قيم
  if (numbersArray.length <= 3) return numbersArray;

  // القائمة ستحتوي على أول ثلاث عناصر في المصفوفة بشكل إفتراضي
  // سوف نقوم بتغير محتوياتها فيما بعد
  let max = [numbersArray[0], numbersArray[1], numbersArray[2]];
  max.sort((a, b) => a - b); // ترتيب المصفوفة تصاعديًا

  // في الحلقة التالية نقوم بالمرور على عناصر القائمة بالكامل (ماعد أول ثلاث عناصر ولذلك بدأ العد من 3)
  for (let i = 3; i < numbersArray.length; i++) {
    // لو كان العنصر أكبر من قيمة أول عنصر في المصفوفة max سوف يتم تبديله
    // ثم نعيد ترتيب المصفوفة مرة أخرى
    if (numbersArray[i] > max[0]) {
      max[0] = numbersArray[i];
      max.sort((a, b) => a - b);
    }
  }
  return max;
}

result = getMaxThree(numbersArray);

console.log("the three largest values are:");
console.log(result);

بعد ذلك يمكنك أن تستخدم التابع reduce لحساب مجموع المصفوفة result كالتالي:

sum = result.reduce((total, ele) => total + ele, 0);
console.log("the total of the three largest values is:");
console.log(sum);

تستطيع أيضًا عمل دالة sumThreeNumbers والتالي تقوم بإستدعاء الدالة getMaxThree وحساب المجموع وإعادته كالتالي:

function sumThreeNumbers(numbersArray) {
  result = getMaxThree(numbersArray);	// الحصول على أكبر ثلاث أرقام من المصفوفة
  return result.reduce((total, ele) => total + ele, 0); // جمع قيمة الأرقام الثلاثة
}

ملاحظة: يمكنك أيضًا أن تستخدم حلقة تكرار لحساب مجموع المصفوفة بدلًا من التابع reduce، كالتالي:

function sumThreeNumbers(numbersArray) {
  result = getMaxThree(numbersArray);
  
  sum = 0;
  for (let i = 0; i<result.length; i++) {
    sum += result[i];
  }
  
  return sum;
}

هنا شكل الكود النهائي:


function getMaxThree(numbersArray) {
  // إرجاع المصفوفة كما هي إن كانت تحتوي على أقل من ثلاث قيم
  if (numbersArray.length <= 3) return numbersArray;

  // القائمة ستحتوي على أول ثلاث عناصر في المصفوفة بشكل إفتراضي
  // سوف نقوم بتغير محتوياتها فيما بعد
  let max = [numbersArray[0], numbersArray[1], numbersArray[2]];
  max.sort((a, b) => a - b); // ترتيب المصفوفة تصاعديًا

  // في الحلقة التالية نقوم بالمرور على عناصر القائمة بالكامل (ماعد أول ثلاث عناصر ولذلك بدأ العد من 3)
  for (let i = 3; i < numbersArray.length; i++) {
    // لو كان العنصر أكبر من قيمة أول عنصر في المصفوفة max سوف يتم تبديله
    // ثم نعيد ترتيب المصفوفة مرة أخرى
    if (numbersArray[i] > max[0]) {
      max[0] = numbersArray[i];
      max.sort((a, b) => a - b);
    }
  }
  return max;
}

function sumThreeNumbers(numbersArray) {
  result = getMaxThree(numbersArray);
  return result.reduce((total, ele) => total + ele, 0);
}

//------------

var numbersArray = [93, 17, 91, 91, 98, 33, 9, 38, 55, 78, 29, 81, 60, 91];
console.log(sumThreeNumbers(numbersArray));

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

شكرا ع المساعدة :)

يوجد سؤال اخر ممكن التوضيح بعد اذنك 

أكتب دالة يمكن تمرير قيمة لها وهذه القيمة عبارة نص مكون من مجموعة من الكلمات ثم تقوم بإرجاع مصفوفة تحتوي على كل الكلمات التي تبدأ بحرف “A “أو حرف “B.“

ليكن اسم الدالة عبارة عن getWords

استخدم التعريف التالي: function getWords (text) {}

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 3 ساعات قال Ola Mahmoud2:

شكرا ع المساعدة :)

يوجد سؤال اخر ممكن التوضيح بعد اذنك 

أكتب دالة يمكن تمرير قيمة لها وهذه القيمة عبارة نص مكون من مجموعة من الكلمات ثم تقوم بإرجاع مصفوفة تحتوي على كل الكلمات التي تبدأ بحرف “A “أو حرف “B.“

ليكن اسم الدالة عبارة عن getWords

استخدم التعريف التالي: function getWords (text) {}

يمكنك استخدام split و foreach و startsWith لتحقيق المطلوب

function getWords(text) {
  console.log(text);
  
  let result = [];//قائمة لحفظ الكلمات المراد ارجاعها
  
  let words = text.split(' ');//تحويل النص لمصفوفة عبارة عن الكلمات المتواجدة في المصفوفة المفصولة بفراغ
  
  console.log(words);
  
  words.forEach((word) => {// استخدام حلقة التكرار لجلب كل كلمة على حدى
    
    if (word.startsWith('a') || word.startsWith('b')) {//التأكد من ان الكلمة تبدأ ب الحروف المرغوبة
      result.push(word); //اذا كانت الكلمة تبدأ بالحروف المرغوبة نضيفها لقائمة النتيجة
    }
    
  });
  console.log(result);
  return result; // ارجاع النتيجة في الاخير
}

getWords('hello its a gread day body');

الاخراج سيكون كالتالي

hello its a gread day body //النص
[ 'hello', 'its', 'a', 'gread', 'day', 'body' ] // النص بعد تحويله لقائمة
[ 'a', 'body' ] // النتيجة

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...