
الحلول والتفسير لتمارين JS.
هذه ليست ورقة الغش!
لقد قمت بهذا التجميع أثناء حل خوارزميات JavaScript في Freecodecamp و Edabit. اعتقدت أن هذا يجب أن يكون دليلًا مفيدًا للأشخاص الذين يحاولون الاستيلاء على نموذج تطوير الويب.
قم بإنشاء وظيفة تعرض أصغر قيمة في الصفيف.
مثال:
> console . log ( findSmallest ( [ 30 , 45 , 60 , 7 ] ) ) ;
> 1مرجع:
حل:
function findSmallest ( arr ) {
return Math . min ( ... arr ) ;
} الوظيفة التي ستعود السلسلة الخاصة بك بالترتيب الأبجدي
مثال:
> console . log ( AlphabeticalOrder ( 'hello' ) ) ;
> "ehllo"مرجع:
صفيف
صفيف
حل:
function AlphabeticalOrder ( str ) {
return str
. split ( "" )
. sort ( )
. join ( "" ) ;
} في الرياضيات ، فإن مصنع عدد صحيح غير سالب ، يشار إليه بواسطة N! ، هو نتاج جميع الأعداد الصحيحة الإيجابية أقل من أو تساوي N. بعبارات بسيطة ، يتم حل العازف 7 مثل هذا:
7 _ 6 _ 5 _ 4 _ 3 _ 2 _ 1 = 5،040
مثال:
> console . log ( factorializer ( 7 ) ) ;
> 5040مرجع:
عودة
إذا كانت التصريحات الأخرى
حل:
function factorializer ( int ) {
if ( int <= 1 ) {
return 1 ;
} else {
return int * factorializer ( int - 1 ) ;
}
} وظيفة تتيح لك معرفة ما إذا كان الرقم متساويًا أم غريبًا
مثال:
> console . log ( oddOrEven ( 7 ) ) ;
> "Odd"مرجع:
حل:
function oddOrEven ( int ) {
let ouput = int % 2 ;
if ( output == 0 ) {
return "Even" ;
} else {
return "Odd" ;
}
} قم بإزالة جميع الأرقام (الأرقام) الفردية في صفيف وإرجاع مجموعة جديدة تحتوي على أرقام زوجية فقط
مثال:
> console . log ( evenOnly ( [ 1 , 2 , 3 , 4 , 5 , 6 ] ) ) ;
> [ 2 , 4 , 6 ]مرجع:
Array.Filter
Modulo
حل:
function evenOnly ( arr ) {
let result = arr . filter ( arr => arr % 2 == 0 ) ;
return result ;
} قم بإنشاء وظيفة تقبل صفيف ، تحقق من نوع بيانات كل عنصر. ستحذف الوظيفة عناصر السلسلة وستُرجع مجموعة جديدة
مثال:
> console . log ( numbersOnly ( [ 'text' , 3 , 7 , 'github' , 13 , 'dev' ] ) ) ;
> [ 3 , 7 , 13 ]مرجع:
Array.Filter
نوع
حل:
function numbersOnly ( arr ) {
return arr . filter ( arr => typeof arr == "number" ) ;
} أعد مجموع العدد الذي يعود إلى جذره. بمعنى آخر ، ستعمل الوظيفة مثل هذا:
Addup (5) ؛
// 5 + 4 + 3 + 2 + 1 + 0 = 15
مثال:
> console . log ( addUp ( 8 ) ) ;
> 36مرجع:
عودة
1 + 2 + 3 + 4 + ⋯
حل:
function addUp ( num ) {
if ( num <= 1 ) {
return num ;
} else {
return num + addUp ( num - 1 ) ;
}
} قم بإنشاء وظيفة تقبل صفيف وتفعل ما يلي:
احصل على أدنى عنصر
احصل على أعلى عنصر
احصل على طول الصفيف
الحصول على متوسط كل العناصر.
تخزين هذه المعايير في مجموعة جديدة
مثال:
> console . log ( minMaxLengthAverage ( [ 7 , 13 , 3 , 77 , 100 ] ) ) ;
> [ 3 , 100 , 5 , 40 ]مرجع:
الرياضيات
Math.Max
صفيف
Array.Length
حل:
function minMaxLengthAverage ( arr ) {
const min = Math . min ( ... arr ) ;
const max = Math . max ( ... arr ) ;
const len = arr . length ;
//Reducer for get Average function
const ave = arr => arr . reduce ( ( acc , curVal ) => acc + curVal , 0 ) / len ;
const average = ave ( arr ) ;
//Return output
return [ min , max , len , average ] ;
} صفيف Array.sort() ماذا لو أردنا فرز الأرقام من أدنى إلى الأعلى؟ هل ستنتج إخراجًا صحيحًا؟
مثال: هذا ما يحدث إذا قمنا بتطبيق Array.sort() على الأرقام:
> arr = [ 45 , 34 , 23 , 12 , 7 ]
> console . log ( arr . sort ( ) ) ;
> [ 12 , 23 , 34 , 45 , 7 ]الإخراج غير صحيح ، في حين أننا نتوقع أن تكون هذه القيمة الإرجاع:
> console . log ( sortNumsAscending ( [ 7 , 13 , 3 , 77 , 100 ] ) ) ;
> [ 3 , 5 , 40 , 100 ]مرجع:
الفرز في JavaScript
Array.sort ()
حل:
function sortNumsAscending ( arr ) {
let sorter = ( a , b ) => {
return a - b ;
} ;
if ( arr == [ ] ) {
return [ ] ;
} else if ( arr == null ) {
return [ ] ;
} else {
return arr . sort ( sorter ) ;
}
} تحويل الرقم المحدد إلى عدد روماني
مثال:
> romanNumbers ( 1989 ) ;
> MCMLXXXIXمرجع:
الأرقام الرومانية
array.join ()
array.indexof ()
Array.Splice ()
حل:
function romanNumbers ( num ) {
let values = [ 1000 , 900 , 500 , 400 , 100 , 90 , 50 , 40 , 10 , 9 , 5 , 4 , 1 ] ;
let romanNumerals = [
"M" ,
"CM" ,
"D" ,
"CD" ,
"C" ,
"XC" ,
"L" ,
"XL" ,
"X" ,
"IX" ,
"V" ,
"IV" ,
"I"
] ;
let roman = "" ;
for ( i = 0 ; i < values . length ; i ++ ) {
while ( values [ i ] <= num ) {
roman += romanNumerals [ i ] ;
num -= values [ i ] ;
}
}
return roman ;
}
console . log ( romanNumbers ( 1989 ) ) ; إرجاع المبلغ المطلق لجميع عناصر الصفيف
مثال:
> getAbsSum ( [ - 1 , - 3 , - 5 , - 4 , - 10 , 0 ] ) ;
> 23مرجع:
Array.prototype.reduce
Math.ABS
حل:
function getAbsSum ( arr ) {
const reducer = ( acc , currVal ) => {
return acc + currVal ;
} ;
return Math . abs ( arr . reduce ( reducer ) ) ;
} تشكيل مثلث باستخدام علامات التجزئة
مثال:
> #
> ##
> ###
> ####
> #####
> ######
> #######مرجع:
حل:
for ( x = "#" ; x . length <= 7 ; x += x ) {
console . log ( x ) ;
} إرجاع عدد الكلمات التي أعطيت
مثال:
> countWords ( 'hello from kbpsystem!' ) ;
> 3مرجع:
string.prototype.split
Array.Length
حل:
function countWords ( str ) {
return str . split ( " " ) . length ;
} اضرب جميع العناصر في صفيف بطولها
مثال:
> MultiplyByLength ( [ 4 , 1 , 1 ] ) ;
> [ 12 , 3 , 3 ]مرجع:
ل
Array.Length
Array.Prototype.push
Array.prototype.map
حل:
function MultiplyByLength ( arr ) {
let len = arr . length ;
for ( i = 0 ; i < len ; i ++ ) {
arr [ i ] = arr [ i ] * len ;
}
return arr ;
} قم بإنشاء وظيفة ستتحقق مما إذا كان STR1 ينتهي بالأحرف في Str2
قواعد:
خذ سلسلتين كحجة
تحديد ما إذا كانت السلسلة الثانية تتطابق مع إنهاء السلسلة الأولى
إرجاع قيمة منطقية
مثال:
> console . log ( checkEnding ( "samurai" , "zi" ) ) ;
> falseمرجع:
string.prototype.endswith () تحدد طريقة ما إذا كانت السلسلة تنتهي بأحرف سلسلة محددة ، أو إرجاع صحيح أو خطأ حسب الاقتضاء.
Array.Prototype.join Method تنضم إلى جميع عناصر صفيف (أو كائن يشبه المصفوفة) إلى سلسلة وإرجاع هذه السلسلة.
حل:
function checkEnding ( str1 , str2 ) {
return str1 . endsWith ( str2 ) ;
} قم بإنشاء وظيفة تكرر كل حرف سلسلة مرتين
مثال:
> console . log ( doubleChar ( 'exercise' ) ) ;
> eexxeerrcciisseeمرجع:
Array.Prototype.Split تقسيم طريقة split() كائن سلسلة إلى مجموعة من الأوتار عن طريق فصل السلسلة إلى سلاسل فرعية ، باستخدام سلسلة فاصل محددة لتحديد مكان إجراء كل تقسيم.
Array.Prototype.Map طريقة map() تنشئ مجموعة جديدة مع نتائج استدعاء وظيفة المقدمة على كل عنصر في صفيف الاتصال.
Array.Prototype.inin تنضم هذه الطريقة إلى جميع عناصر صفيف (أو كائن يشبه المصفوفة) في سلسلة وإرجاع هذه السلسلة.
حل:
function doubleChar ( str ) {
let x = str . split ( "" ) ;
return x . map ( x => x . repeat ( 2 ) ) . join ( "" ) ;
} Explanation: في الحل أعلاه ، نطبق أولاً طريقة الانقسام على وسيطة السلسلة ثم تخزينها في متغير يسمى x . بعد ذلك ، نستخدم وظيفة الخريطة من أجل تنفيذ عملية الازدواجية على كل عنصر من عناصر السلسلة ، والتي تم اعتبارها صفيفًا في هذه الحالة لأننا طبقنا طريقة تقسيم على السلسلة. بمجرد الانتهاء من عملية التكرار ، نسمي طريقة join() . سيؤدي تطبيق هذه الطريقة إلى تحويل المصفوفة إلى كونها سلسلة مرة أخرى ولكن هذه المرة بقيم مكررة جديدة
إرجاع موقع فهرس عنصر من صفيف معين. الوسيطة الأولى هي الصفيف الذي ترغب في البحث عنه والثاني هو العنصر (إما السلسلة/الرقم) للبحث عنه.
مثال:
> console . log ( findIndex ( [ 'github' , 'gitlab' , 'bitbucket' , 'apollo' ] , 'gitlab' ) ) ;
> 1مرجع:
حل:
function findIndex ( arr , element ) {
return arr . indexOf ( element ) ;
} Explanation: findIndex function تأخذ وسيطتين. الأول هو المصفوفة التي سيتم مراقبتها ، ثم الأخير هو العنصر الموجود في الصفيف الذي يجب تحديد موقعه. لدى JavaScript طريقة مدمجة تسمى indexOf() واستخدمنا ذلك من أجل تحديد موقع فهرس عنصر معين في صفيف. هذه الطريقة تحلق من خلال الصفيف تحديد قيمة الفهرس للعنصر
هذا التمرين من باب المجاملة FreeCodecamp
هذا التمرين هو تنفيذ DO أثناء البيان. هدفنا هنا هو الاستمرار في تشغيل وظيفة/بيان ، وتعيين paramater وبمجرد أن يتم تقييم النتيجة للمعلمة إلى false ، سيتوقف تنفيذ الوظيفة/العبارة
مثال:
var result = "" ;
var i = 0 ;
do {
i = i + 1 ;
result = result + i ;
} while ( i < 5 ) ;
console . log ( result ) ;
// expected result: "12345"مرجع:
Do ... بينما يقوم البيان بإنشاء حلقة تنفذ عبارة محددة حتى يتم تقييم حالة الاختبار إلى False. يتم تقييم الشرط بعد تنفيذ البيان ، مما يؤدي إلى تنفيذ البيان المحدد مرة واحدة على الأقل.
حل:
// Setup
> var myArray = [ ] ;
> var i = 10 ;
> // Only change code below this line.
> do {
myArray . push ( i ) ;
i ++ ;
console . log ( i )
} while ( i < 11 ) نحن على رموز الرمز المربعات!
لا تتردد في تقديم مشكلة أو سحب طلبات