freeCodeCamp/guide/arabic/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../map-the-debris/index.md

9.6 KiB

title localeTitle
Map the Debris رسم خريطة الحطام

:triangular_flag_on_post: تذكر استخدام Read-Search-Ask إذا واجهتك مشكلة. حاول إقران البرنامج :busts_in_silhouette: واكتب الكود الخاص بك :pencil:

:checkered_flag: شرح المشكلة:

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

روابط ذات صلة

:speech_balloon: تلميح: 1

الصيغة المطلوبة هي:

حاول أن تحل المشكلة الآن

:speech_balloon: تلميح: 2

استخدم Math.round() التالي كما هو مطلوب. Math.ceil() استخدام Math.ceil() بتمرير الاختبار الأول لكنه يفشل في الاختبار الثاني.

حاول أن تحل المشكلة الآن

:speech_balloon: تلميح: 3

تعرف على كيفية إزالة وإضافة مفتاح إلى كائن JavaScript.

حاول أن تحل المشكلة الآن

تنبيه المفسد!

علامة تحذير

الحل في المستقبل!

:beginner: الحل الأساسي للكود:

`function orbitalPeriod(arr) { var GM = 398600.4418; var earthRadius = 6367.4447; var a = 2 * Math.PI; var newArr = []; var getOrbPeriod = function(obj) { var c = Math.pow(earthRadius + obj.avgAlt, 3); var b = Math.sqrt(c / GM); var orbPeriod = Math.round(a * b); delete obj.avgAlt; obj.orbitalPeriod = orbPeriod; return obj; };

for (var elem in arr) { newArr.push(getOrbPeriod(arr[elem])); }

return newArr; }

// test here orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]); `

:rocket: تشغيل الكود

شرح الشفرة:

  • جنرال موتورز و earthRadius على حد سواء تعطى لنا.
  • لتسهيل عملية تحرير التعليمات البرمجية وقراءتها ، يتم كتابة كل جزء من المعادلة بشكل منفصل.
  • قم بإنشاء newArr لتخزين orbPeriod .
  • أ هو 2 مرات بي. الجزء الذي هو ثابت على النطاق العالمي بينما الباقي جزء من وظيفة.
  • إنشاء دالة ، gerOrbPeriod() التي ستقوم gerOrbPeriod() العمل المطلوب لأي مقدار من الكائنات.
  • ج ( earthRadius + avgAlt ) إلى المكعب.
  • b هي الجذر التربيعي لـ c مقسومة على GM .
  • قم بإنشاء orbPeriod لتخزين المنتج من a و b ، مع وظيفة Math.round() المطبقة على تقريب ما يصل إلى العدد Math.round() التالي.
  • ثم نحذف المفتاح avgAlt ، ونضيف المفتاح الجديد وقيمته.

روابط ذات صلة

:sunflower: حل الشفرة المتوسطة:

`function orbitalPeriod(arr) { var GM = 398600.4418; var earthRadius = 6367.4447;

//Looping through each key in arr object for(var prop in arr) { //Rounding off the orbital period value var orbitalPer = Math.round(2 * Math.PI * Math.sqrt(Math.pow(arr[prop].avgAlt + earthRadius, 3) / GM)); //deleting the avgAlt property delete arr[prop].avgAlt; //adding orbitalPeriod property arr[prop].orbitalPeriod = orbitalPer; }

return arr; }

// test here orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]); `

:rocket: تشغيل الكود

شرح الشفرة:

  • جنرال موتورز و earthRadius على حد سواء تعطى لنا.
  • يتم استخدام حلقة for..in للتكرار خلال كل قيمة في arr الصفيف المحدد.
  • يحتفظ orbitalPer بقيمة الفترة المدارية لكل تكرار يتم حسابه باستخدام الصيغة.
  • يتم حذف المفتاح avgAlt ، ويتم تعيين orbitalPer الموجود في arr .

:rotating_light: الحل المتقدم للكود:

`function orbitalPeriod(arr) { var GM = 398600.4418; var earthRadius = 6367.4447;

// Loop through each item in the array arr arr.forEach(function(item) { // Calculate the Orbital period value var tmp = Math.round(2 * Math.PI * Math.sqrt(Math.pow(earthRadius + item.avgAlt, 3) / GM)); //Delete the avgAlt property delete item.avgAlt; //Add orbitalPeriod property item.orbitalPeriod = tmp; }); return arr; }

// test here orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]); `

:rocket: تشغيل الكود

شرح الشفرة:

  • جنرال موتورز و earthRadius على حد سواء تعطى لنا.
  • يتم استخدام أسلوب forEach() لتنفيذ الوظيفة مرة واحدة لكل عنصر ( عنصر ) في arr .
  • يحتفظ tmp بقيمة الفترة المدارية لكل عنصر محسوب باستخدام الصيغة.
  • يتم حذف المفتاح avgAlt ، ويتم تعيين الفترة المدارية ( tmp ) التي تم العثور عليها إلى مفتاح orbitalPeriod .

روابط ذات صلة

:clipboard: ملاحظات للمساهمات:

  • :warning: لا تقم بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها مشابهة ولكن أفضل ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
  • أضف شرحًا لحلك.
  • تصنيف الحل في واحدة من الفئات التالية - الأساسي والمتوسط والمتقدم . :traffic_light:
  • الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي محتويات رئيسية ذات صلة . ( :warning: لا تزيل أي أسماء مستخدمين حالية )

نرى :point_right: Wiki Challenge Solution Template كمرجع.