Professional Documents
Culture Documents
Arrays methods :
• Length .
• Index start from 0
;]let my = [10, "Say", "Moha", "90", 900, 100, 20, 200, "10", -20, -10
;)console.log(my
))(console.log(my.sort
ن
يعن بتبلش من 1ثم 2ثم 3وهكذا ،بعدا بيعتمد عىل عدد األصفار . ر
sortبتتب ليس تصاعديا ابجديا ي
][10, "Say", "Moha", "90", 900, 100, 20, 200, "10", -20, -10 األساس التتيبر
ي
]"[-10, -20, 10, "10", 100, 20, 200, "90", 900, "Moha", "Say بعد ر
التتيب
يىل صفارو أقل ،بتأثر عىل المصفوفة
بكت الرقم بحط الرقم ي
ببلش بالسالب Kثم باألرقام من 1وبعد ،بعدا بيهتم ر
ر ر
مابتبق عىل حاال بتتغت متل ماطبقت عليها حن لو كان داخل ال . console يعن المصفوفة األساسية ن
األساسية ي
))(console.log(myfriend.reverse
ً
reverseبيعكس ترتيب المصفوفة ،بساوي األخت باألول واألول باألخت ،طبعا ألخر وحدة ألنو بتغت المصفوفة .
))(console.log(myfriend.sort().reverse
ن
فين استخدم تنيناتن بنفس اللحظة .
ي
. بس مابأثر عىل المصفوفة األساسية، بتعمل اقتطاع بتحطلو البداية والنهاية اذا بدكSlice
let myfriend = ["Sayed", "Mohammed", "Gamal", "Yosef", "Osama", "Ali"];
console.log(myfriend);
console.log(myfriend.slice()); // 1
console.log(myfriend.slice(1)); // 2
console.log(myfriend.slice(2, 5)); // 3
console.log(myfriend.slice(-3)) // 4
console.log(myfriend.slice(1, -2)); // 5
console.log(myfriend.slice(-4, -2)); // 6
console.log(myfriend); // 7
]"Sayed", "Mohammed", "Gamal", "Yosef", "Osama", "Ali"[ األساسية
ا
["Sayed", "Mohammed", "Gamal", "Yosef", "Osama", "Ali"] ( هون ماحددت لذلك بياخدا كامل1
["Mohammed", "Gamal", "Yosef", "Osama", "Ali"] (2
["Gamal", "Yosef", "Osama"] ( النهاية مابتدخل معنا3
["Yosef", "Osama", "Ali"] (4
["Mohammed", "Gamal", "Yosef"] (5
["Gamal", "Yosef"] (6
"[ رجعت طبعتا نفسا مشان ورجيكSayed", "Mohammed", "Gamal", "Yosef", "Osama", "Ali"] (7
. س من المصفوفة األساسية
مابتغت ي
let myfriend = ["Sayed", "Mohammed", "Gamal", "Yosef", "Osama", "Ali"];
myfriend.splice(0, 2, "Sameer", "Samar");
console.log(myfriend);
يىل أنا ن ن ر
يحذفىل هون ختت تني رح يحذف أول تني من البداية صفر ي
ي ثم شو بدي، بحطلو البداية اجباريsplice
ن
بأثر عىل، س بس بحط هدول مكان الرقم البداية ن
يف حال ماحطيتلو يحذف ي، وحطىل هدول األسمي مكانن
ي حددتا
. ]"Sameer", "Samar", "Gamal", "Yosef", "Osama", "Ali"[ النتيجة، المصفوفة
myfriend.splice(2, 2, "Sameer", "Samar");
. ]"Sayed", "Mohammed", "Sameer", "Samar", "Osama", "Ali"[ النتيجة
ن
. فين حطا عنارص إضافية
طبعا ي، لدمج كذا مصفوفة مع بعضconcat
let myfriend = ["Sayed", "Mohammed", "Gamal"];
let newfriend = ["Sameer", "Samar"];
let schoolfriend = ["Osama", "Ali"]
let allfriend = myfriend.concat(newfriend, schoolfriend, "Yosef")
console.log(allfriend)
. ]"Sayed", "Mohammed", "Gamal", "Sameer", "Samar", "Osama", "Ali", "Yosef"[ النتيجة
. وبحطن مع بعضstring بحول كل عنارص المصفوفة الjoin
console.log(allfriend.join());
console.log(allfriend.join(""));
console.log(allfriend.join("|"));
ن
س رح يحط فاصلة بيناتن
يف حال ماحطيت يSayed,Mohammed,Gamal,Sameer,Samar,Osama,Ali,Yosef
SayedMohammedGamalSameerSamarOsamaAliYosef
Sayed|Mohammed|Gamal|Sameer|Samar|Osama|Ali|Yosef
: تحديات
let zero = 0;
let counter = 3;
console.log(); // "Elzero"
console.log(); // "rO"
ن
. القواني ن أنا رح حل ر، هادا المطلوب
بأكت من طريقة مشان إذا كان يف أي طريقة بتخالف
console.log(my.slice(zero,counter).concat("Osama").reverse());
// ["Osama", "Elham", "Mazero", "Ahmed"];
. هاي أول طريقة بالنسبة ألول تحدي
my.length = ++counter
console.log(my.reverse());
// ["Osama", "Elham", "Mazero", "Ahmed"];
ن
. تان طريقة بالنسبة ألول تحدي
هاي ي
console.log(my.slice(zero,++counter).reverse());
// ["Osama", "Elham", "Mazero", "Ahmed"];
. هاي تالت طريقة بالنسبة ألول تحدي
console.log(my.slice(zero, my.indexOf("Gamal")).reverse());
// ["Osama", "Elham", "Mazero", "Ahmed"];
. هاي رابع طريقة بالنسبة ألول تحدي
my.pop(); my.pop()
console.log(my.reverse())
. هاي خامس طريقة بالنسبة ألول تحدي
console.log(my.slice(++zero, counter).reverse());
// ["Elham", "Mazero"]
ن
. لتان تحدي
هاي أول حل بالنسبة ي
console.log(my.slice(++zero, counter).reverse());
// ["Elham", "Mazero"]
ر
. وباف الحلول كلن نفس الفكرة مع القبل ن ن
ي ، تحدي لتان
ي بالنسبة حل ثان
هاي ي
my.length = zero;
my[zero] = "Elzero"
console.log(my); // "Elzero"
. هاي الحل بالنسبة لتالت تحدي
my.length = zero;
my[zero] = "Elzero"
console.log(my.toString().split("").slice(- --
counter).join("").split())
. هون ماحليت كامل التحدي الم الحرف األخت يكون كبت
[40] to [47]
Here : رابط التكليفات عىل الموقع
: 1 التكليف
. ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب •
ن
. مختلفتي ن
بطريقتي يجب عمل الحل والمطلوب •
// Method 1
console.log(myFriends.slice(myFriends.indexOf("Ahmed"),num));
// ["Ahmed", "Elham", "Osama"];
// Method 2
myFriends.pop()
console.log(myFriends); // ["Ahmed", "Elham", "Osama"];
: 2 التكليف
. ممنوع إستخدام األرقام نهائيا •
console.log(finalArr.concat(arrOne,arrTwo).sort().reverse());
// ["Z", "X", "D", "C", "B", "A"]
: 4 التكليف
. فقط0 ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام الرقم •
console.log(words.reverse()[0][0].slice(website.length).toUpperCase());
// ZERO
. هاي أول طريقة
let website = "Go";
let words = [`${website}ogle`, "Facebook", ["Elzero", "Web",
"School"]];
console.log(words[website.length][0].slice(website.length).toUpperCase(
)); // ZERO
ن
. تان طريقة
هاي ي
: 5 التكليف
. haystack المسماهArray موجود داخل الneedle كل ما عليك هو التأكد أن قيمة متغت •
// Write 3 Solutions
if (haystack.includes(needle)) {
console.log("Found")
}
: 6 التكليف
. فيه ما تعلمته لتخرج النتيجة الموجودة ن يف المثالCode قم بكتابة •
console.log(three) // fxy
Loop
• for ([initialization]; [condition]; [final-expression]) { statement }
for (let i = 0; i < 10 ; i++) {
console.log(i);
}
ن ن
الش الشط هون حطيت اصغر من عشة ي تان
ي، الش بحط مرحلة االنطالق
ي اول، موظفي انا هون بدي عش
ن
. بعدا شو يساوي، موظفي وماحطيت يساوي النو ببلش من الصفر للتسعة هيط بصت عندي عشة
Loop
• Loop On Sequences
let myfriend = ["Ahmed", "Mohammed", "Ali", "Osama", "Yosef"];
console.log(myfriend[0]);
console.log(myfriend[1]);
console.log(myfriend[2]);
console.log(myfriend[3]);
console.log(myfriend[4]);
لذلك، أكت من هيك بكتت
وممكن يكون المصفوفة ر، األسام ولكن هاي الطريقة تحتاج الوقت
ي طبعىل كل
ي هيك رح
. loop منستخدم ال
for (let i = 0; i < myfriend.length; i++) {
console.log(myfriend[i])
}
. بتعط نفس النتيجة ولكن بطريقة أرسع
ي هاي
let myfriend = [1, 2, "Ahmed", "Mohammed", 3, "Ali", "Osama", "Yosef"];
let onlynames = [];
Loop :
• Nested Loop .
Loop control :
• Break .
• Continue .
• Label .
for (;;) {
console.log(products[i]);
i++
if (i === products.length) break ;
}
ن
أما إذا كان داخل الحلقة مارح، يحطىل قيمتا
ي رحi ، هون يف حال طبعت خارج الحلقة، طريقة متقدمة لكتابة الحلقة
. i يطبعىل قيمة ال
ي
Products Practice :
][48] to [53
رابط التكليفات عىل الموقع Here :
التكليف : 1
ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب . •
// Output
// 10 20 30 50 60 70 80 90 100
التكليف : 2
ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب . •
يجب طباعة األرقام كما ن يف المثال والتوقف عند الرقم . 3 •
إذا كان الرقم اصغر من 10قم بطباعة صفر قبله . •
// Output 10 09 08 07 06 05 04 03
{ )for (let i = start ; i >= stop ; i--
{ )if (i < start
)`}console.log(`0${i
{ } else
)console.log(i
}
}
التكليف : 3
ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب . •
// Output 1 -- 2 -- 4 2 -- 2 -- 4 3 -- 2 -- 4 4 -- 2
التكليف : 4
ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب . •
{ );;( for
)console.log(index
index -= jump
{ )if (index === jump
break
}
}
التكليف : 5
ممنوع إستخدام األرقام نهائيا وال الحروف ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب •
يجب طباعة األسماء كما ن يف المثال مع وضع رقم قبل كل قيمة بطريقة ديناميكية . •
// Output
// ""1 => Sayed
// ""2 => Eman
// ""3 => Mahmoud
// ""4 => Osama
// ""5 => Sameh
التكليف : 6
ممنوع إستخدام األرقام أو الحروف نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب. •
المطلوب بإستخدام ال Loopتحويل الحروف الكبت لصغتة والعكس .شاهد المثال . •
// Output
// "ELzERo"
: 7 التكليف
. ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب •
ن
. إثني للنهاية المطلوب طباعة األرقام فقط من أول الرقم •
let start = 0;
let mix = [1, 2, 3, "A", "B", "C", 4];
// Output
// 2
// 3
// 4
Loop
• Do / while
while (false) {
console.log(products[index]);
index +=1; // index++
}
. النو من األول عبقلو مانو محقق الشط، س
مارح يطبع ي
let products = ["Keypboard", "Mouse", "Pad", "Monitor", "iphone"];
let i = 0;
do {
console.log(i);
i++
} while(false);
console.log(i);
. 0 1 هون النتيجة، بتخليك تتطبع باألول بعدا بتطلع عىل الشط اذا تحقق وال ألdo
: تحديات
/*
Loop Challenge
*/
document.write(`<hr>`);
[54] to [56]
Here : رابط التكليفات عىل الموقع
: 1 التكليف
. ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب •
ر
. A الن تبدأ بحرف
يجب عدم طباعة األرقام وال االسماء ي •
// Output
// "1 => Sayed"
// "2 => Mahmoud"
Function :
• What Is Function ?
• User-Defined Vs Built In .
• Syntax + Basic Usage.
• Example From Real Life .
• Paramerter + Argument .
• Practical Example .
function sayHello(userName) {
console.log(`Hello ${userName}`);
}
sayHello("Osama");
sayHello("Ahmed");
sayHello("Mohammed");
أسموusername ، وظيفتو اذا بدي أعمل شغلة وكررا عدة مرات بعمل تابع مشان أخترص الشغلFunction
. Argument " يسمOsama", Paramerter
console.log(typeof console.log);
. Function النتيجة
Function
• Return .
• Automatic Semicolon Insertion [No Line Terminator Allowed] .
• Interrupting .
function sayHello(userName) {
return `hello ${userName}`
}
console.log(sayHello("Osama"));
let result = sayHello("Ali");
console.log(result)
return ومابصت حط ال، س بعدها مابيشتغل
أي ي، س بعدا
ومابصت حط ي، متل كأنو بيحفظا لبعدينreturn
ن
. مرتي هون بيطبع، حرصا الزم اكتب بهل الطريقة مشان الطباعة، والتطبيق بسطرين
function calc(num1, num2) {
return num1 + num2;
}
let result = calc(10, 20);
console.log(result)
ن
. رقمي هون جمع
function generate(start, end) {
for (let i = start; i <= end; i++) {
console.log(i)
if (i === 15) {
return `Interuptting`;
}
}
}
generate(10, 20);
. ويوقف15 النتيجة رح يوصل لل
Fuction
• Default Function Parameters .
• Function Parameters Default [Undefined].
• Old Strategies [Condition + Logical Or] .
• ES6 Method .
ً
هناك عدة طرقundefined بدال من منtext مشان طالع، undefined ه
يparameters للdefault value ال
. قديمة ووحدة حديثة
function sayHello(userName, age ="Unknown") { //طريقة حديثة
// if (age === undefined) {
// age = "Unknown"; // طريقة قديمة
// }
// age = age || "UnKnown"; // طريقة قديمة
return `Hello ${userName} your age is ${age}`
}
console.log(sayHello("Mohammed"))
. Hello Mohammed your age is Unknown النتيجة
. Array طبعا بكون نوعا، (...numbers) بحط قبلو ثالث نقطRest Parameters
function calc(...numbers) {
console.log(Array.isArray(numbers));
let result = 0;
for (let i = 0; i < numbers.length; i++) {
result += numbers[i]; // result = result + numbers[i]
}
return `Final Result is ${result}`
}
console.log(calc(10, 20, 40, 50, 20, 50))
ن
. 190 النتيجة، بفيدن متل هل الحالة عندي عدد كبت من األرقام الزم أجمعن
ي
: تحديات
function showDetails(a, b, c) {
let emptyArray = [];
emptyArray.push(a,b,c)
for(let i = 0; i < emptyArray.length; i++) {
typeof emptyArray[i] === "string"
? nam = emptyArray[i]
: typeof emptyArray[i] === "number"
? num = emptyArray[i]
: bool = emptyArray[i]
}
bool === true ? bool = "Available" : bool = "Not Available";
][57] to [63
رابط التكليفات عىل الموقع Here :
التكليف : 1
قم بإنشاء Functionتظهر رسالة ترحيب لكل شخص بأي إسم تريده . •
ن
إثني Parametersوهما إسم الشخص والنوع سواء ذكر أو انن . ال Functionتقبل •
قم بطباعة رسالة ترحيبية للشخص فيها إسمه وقبل اإلسم Mrأو Missبناء عىل نوع الشخص سواء ذكر أو •
انن .
لو لم يكتب الشخص نوعه ويفضل عدم ذكره ال تطبع Mrوال Missوإطبع الرسالة ر
التحيبية فقط . •
التكليف : 2
قم بإنشاء Functionتقوم بعمل عمليات حسابية مختلفة . •
ن
والثان ونوع العملية الحسابية .
ي ال Functionتقبل ثالثة Parametersهم الرقم األول •
// Needed Output
calculate(20); // Second Number Not Found
calculate(20, 30); // 50
calculate(20, 30, 'add'); // 50
calculate(20, 30, 'subtract'); // -10
calculate(20, 30, 'multiply'); // 600
: 3 التكليف
. تقوم بحساب عمرك بجميع وحدات الوقتFunction قم بإنشاء •
ن
. بالسني واحد فقط هو عمركParameter تقبلFunction ال •
ن
. والثوان
ي المطلوب طباعة عمرك بالشهور واألسابيع واأليام والساعات والدقائق •
ن ن
. Console المطلوب طباعة كل وحدة من وحدات الوقت يف سطر منفصل يف ال •
ن
وف حالة غت ذلك إطبع رسالة تفيد أن العمر خارج النطاق ي100 وأقل من10 أكت من يجب التأكد من أن العمر ر •
function ageInTime(theAge) {
if(theAge > 10 && theAge < 100) {
console.log(`Months: ${theAge * 12}`)
console.log(`Weeks: ${theAge * 12 * 4}`)
console.log(`Days: ${theAge * 12 * 4 * 7}`)
console.log(`Hours: ${theAge * 12 * 4 * 7 * 24}`)
console.log(`Minutes: ${theAge * 12 * 4 * 7 * 24 * 60}`)
console.log(`Seconds: ${theAge * 12 * 4 * 7 * 24 * 3600}`)
} else {
console.log("Age Out Of Range")
}
}
// Needed Output
ageInTime(110); // Age Out Of Range
ageInTime(38); // Months Example => 456 Months
:) (التحدي4 التكليف
. تطبع رسالة للمستخدم فيها إسمه وسنه وهل هو متاح للعمل أم الFunction قم بإنشاء •
ن
. معي عشوان وليس لهم ترتيب بشكلFunction البيانات سوف يتم إستخدامها داخل ال •
ي
يعت عنها يجب عليك طباعة الرسالة بناء عىل نوع البيانات لتكون رسالة
البيانات غت مرتبة وليس لها إسم ر •
.منطقية
. وبناء عليها تتغت الرسالةFalse أوTrue حالة العمل يمكن أن تكون •
function showDetails(a, b, c) {
let emptyArray = [];
emptyArray.push(a,b,c)
for(let i = 0; i < emptyArray.length; i++) {
typeof emptyArray[i] === "string"
? nam = emptyArray[i]
: typeof emptyArray[i] === "number"
? num = emptyArray[i]
: bool = emptyArray[i]
}
bool === true ? bool = "Available" : bool = "Not Available";
: 5 التكليف
. HTML ن يف صفحة الSelect Box تقوم بإنشاءFunction قم بإنشاء •
ن
. والثان هو عام النهاية ن
ي األول هو عام البدايةParameters إثني تقبل منكFunction ال •
كل واحد فيهم فيه العام رOptions يحتوي عىلSelect Box قم بإنشاء ال
. حن النهاية •
<select>
<option value="2000">2000</option>
<option value="2001">2001</option>
<option value="2002">2002</option>
<option value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
</select>
: 6 التكليف
. الن تمررها لها ن يف بعضها
ر ن
تقوم برصب جميع األعداد يFunction قم بإنشاء •
ر
. Function الن ستمررها لل
يParameters غت معروف كم عدد ال •
قبل بدأ عملية نInteger قم بتحويله لFloat عبارة عنArgument إذا كان ال
. الرصب •
function multiply(...mult) {
for (let i = 0; i < mult.length; i++) {
if (typeof mult[i] === "string") {
continue
} else {
console.log(mult[i] * mult[i + 1])
}
}
}
Function :
• Anonymous Function .
• Calling Named Function Vs Anonumous Function .
• Argument To Other Function .
• Task Without Name .
• SeTimeout .
console.log(calc(10, 20));
function calc(num1, num2) {
return num1 + num2;
}
. رح يقلك ن يف مشكلةconst والlet والvar مو متل ال، رح تطبعا عاديfunction ن يف حال حطيت الطباعة قبل ال
console.log(calculator(10, 20));
let calculator = function (num1, num2) {
return num1 + num2;
}
مارح تكون موجودة غتFunction هون مارح يطبع رح يطالع مشكلة ألنو ال، Anonymous Function هادا أسمو
ن
. بعدين بطبعFunction يعن الزم حط ال
وقت يوصل لهل السطر ي
let calculator = function (num1, num2) {
return num1 + num2;
}
console.log(calculator(10, 20));
. هيك بيشتغل عادي
let calculator = function elzero(num1, num2) {
return num1 + num2;
}
console.log(elzero(10, 20));
ن
، variable الزم أستدعيها باسم ال، مافين أستدعيها باألسم متل هون مارح تشتغل ولكنfunction سم ال ن
ي فين ن ي أنا ي
. error بفيدن األسم مشان أعرف وين ال
ي أنا
ن
إذا عندي شغلة بدي أستخدما مرة، من دون أسمfunction مشان تعرف الحكمة من وضع، يف أمثلة متقدمة لبعدين
. وحدة
Function
• Function Inside Function .
• Return Function .
Function
• Arrow Function .
o Regular Vs Arrow [Param + No Param] .
o Multiple Lines .
function print() {
return 10;
}
console.log(print())
console.log(print(100, 50))
ن
. التني بيعطو نفس النتيجة
Scope
• Global And Local Scope .
ن
. مافين ن ن
ي Local scope اما، فين استعمله يف كامل الملف
يGlobal Scope يىل بال
ي
var a = 1;
let b = 2;
function showtext() {
console.log(`Function ${a}`)
console.log(`Function ${b}`)
var a = 10; /// بيعطيundefined
let b = 20; /// بيعطي رسالةError
}
console.log(`From Global ${a}`)
console.log(`From Global ${b}`)
showtext()
ً
طبعا هون الفرق ن ن ن
بي ، )Global( بدور بغيت مكان، ) يف حال مالقاهLocal(يف البداية التابع بيبحث عن المتغيت داخله
للمتغتات وحطن قبل الdeclar النو الزم اعمل، error بيعط رسالة
ي let و الundefined بيعط
ي var ال
. console
var a = 1;
let b = 2;
function showtext() {
var a = 10;
let b = 20;
console.log(`Function ${a}`)
console.log(`Function ${b}`)
}
console.log(`From Global ${a}`)
console.log(`From Global ${b}`)
showtext()
خاصي فيها ن
ن ً
يعن الطباعة خارج
ي هدول function ال داخل يىل
ي وطبعا ، 20 و10 رح يطبعfunction يىل داخل ال
ي
. مارح يطبع هدولfunction
// var a = 1;
// let b = 2;
function showtext() {
var a = 10;
let b = 20;
console.log(`Function ${a}`)
console.log(`Function ${b}`)
}
console.log(`From Global ${a}`)
console.log(`From Global ${b}`)
showtext()
.س
مارح يطبع ي, هيك رح يصت عندي مشكلة
Scope :
• Block Scope [If, Switch, For] .
var x = 10;
let y = 20;
if (true) {
var x = 50; // بيعمل تغير في المتغيير األساسي
let y = 100; // مابيعمل تغير على المتغيير األساسي
console.log(x, y)
}
console.log(x, y)
األساس ،ولكن ال letمابغت فقط داخل
ي النتيجة األول ، 50 100النتيجة الثانية 50 20هون ال varبغت المتغيت
ال functionأو الحلقة . .......
Scope :
• Lexical Scope .
ن
استن لنوصلو) Search : (إذا بدك بحاث عن هدول أو إذا بدك
• Execution Context .
• Lexical Environment .
{ )(function parent
;let a = 10
{ )(function child
;let a = 20
;)console.log(a
}
;)(child
}
;)(parent
يىل داخلو بعدين بيبحث برا ،ولكن ال functionاألساسية مافيها تاخد قيمة
الش بيطلع عىل ي
ي يطبعىل 20النو اول
ي رح
يىل داخل ال functionالفرعية .
المتغيت ي
{ )(function parent
;)console.log(a
{ )(function child
;let a = 20
;)console.log(a
}
;)(child
}
;)(parent
يطلعىل مشكلة .
ي مارح يطبع ،رح
{ )(function parent
let a = 10;
function child() {
let a = 20;
function grand() {
console.log(a);
}
grand();
}
child();
}
parent();
. بيطبع اول واحد بشوفو قدامو، 20 يطبعىل
ي رح
function parent() {
let a = 10;
console.log(b);
function child() {
let a = 20;
let b = 10;
function grand() {
console.log(a);
}
grand();
}
child();
}
parent();
. الفرعيةfunction ه بال
النو يb يطلعىل مشكلة مشان ال
ي رح
: تحديات
: التحدي األول
let names = function (...Names) {
return `String [${Names.join("], [")}] => Done !`;
}
console.log(names("Osama", "Mohammed", "Ali", "Ibrahim"));
// String [Osama], [Mohammed], [Ali], [Ibrahim] => Done !
!String [Osama], [Mohammed], [Ali], [Ibrahim] => Done النتيجة
;`! let names =(...Names) => `String [${Names.join("], [")}] => Done
;))"console.log(names("Osama", "Mohammed", "Ali", "Ibrahim
// Arrow Function
نفس فوق بس هون حولتا ل . Arrow Function
ن
الثان :
ي التحدي
;]let myNumbers = [20, 50, 10, 60
;]let calc = (one, two, ...nums) => one + two + nums[0
console.log(calc(10, 50, 20)); // 80
ماقتنعت بالحل ،ألنو مانو واضح شو المطلوب بأي طريقة .
][64] to [70
رابط التكليفات عىل الموقع Here :
التكليف : 01
كالتال zName, zAge,
ي • قم بإنشاء Functionبإسم getDetailsتقبل منك ثالثة Parametersوهم
. zCountry
• ageWithMessageتقبل منك رسالة فيها العمر تستخرج منه فقط العمر وتقوم بتغيت الرسالة شاهد المثال
لتفهم .
حرفي من إسم البلد بحروف كبتةن countryTwoLettersتقبل منك إسم البلد وترجع لك رسالة معها أول •
شاهد المثال لتفهم .
fullDetailsتقوم بدمج جميع ال Functionsالسابقة لتخرج لك الرسالة كاملة كما ن يف المثال . •
إسم الشخص الثا ن ين أول حرف منه يمكن أن يكون Capitalأو . Small •
رسالة العمر يمكن أن تتغت ولكن الرقم دائما سيكون ن يف المقدمة ولن يتغت مكانه . •
• التعليقات ستوضح لك المطلوب بالتفصيل .
{ )function getDetails(zName, zAge, zCountry
function namePattern() {
// let firstName = zName.split(" ")[0];
// let letter = zName.split(" ")[1][0];
let firstName = zName.slice(0,zName.indexOf(" "));
let letter = zName.slice(zName.indexOf(" ") + 1, zName.indexOf(" ")
+ 2)
return `Hello ${firstName} ${letter.toUpperCase()}.,`;
// Osama Mohamed => Osama M.
// Ahmed ali => Ahmed A.
}
function ageWithMessage() {
let age = zAge.split(" ");
for(let i = 0; i < age.length; i++) {
!isNaN(parseInt(age[i])) ? num = age[i] : "";
}
return `Your Age Is ${num}`
// 38 Is My Age => Your Age Is 38
// 32 Is The Age => Your Age Is 32
}
function countryTwoLetters() {
return `You Live In ${zCountry.slice(0,2).toUpperCase()}`
// Egypt => You Live In EG
// Syria => You Live In SY
}
function fullDetails() {
return `${namePattern()} ${ageWithMessage()}
${countryTwoLetters()}`
}
return fullDetails(); // Do Not Edit This
}
02 التكليف
. Arrow Function Syntax التالية لFunctions من الFunction قم بتحويل كل
let itsMe = () => "Iam A Normal Function"
console.log(itsMe()); // Iam A Normal Function
let urlCreate = (protocol, web, tld) =>
`${protocol}://www.${web}.${tld}`;
تحدي03 التكليف
. Arrow Function Syntax التالية لFunction قم بتحويل ال
. Currying Function Technique إقرأ عن
function checker(zName) {
};
};
. Currying Function Technique بس مشان تفهم وتعرف كيف مبدأ، هيك الشكل قبل ماحل التكليف
function checker(zName) {
return (status) => (salary) => status === "Available"
? `${zName}, My Salary Is ${salary}` : `Iam Not Avaialble`;
}
console.log(checker("Osama")("Available")(4000));
// Osama, My Salary Is 4000
console.log(checker("Ahmed")("Not Available")());
// Iam Not Avaialble
04 التكليف
. Parameters تقبل منك عدد غت معروف من الspecialMix بإسمFunction قم بإنشاء •
. تحتوي عىل أرقام ن يف بدايتهاStrings أوStrings يمكن أن تقبل أرقام أوFunction ال •
ن
الString تستثن أي تحتوي عىل أرقام قم بإستخراج االرقام منهم وقم بجمعهم وطبعاStrings إذا كانت •
ي
. يحتوي عىل أرقام
. All Is Strings تقوم بطباعة رسالةString عبارة عنArguments إذا كانت جميع ال •
function specialMix(...data) {
let result = 0;
for (let i = 0; i < data.length; i++) {
if (typeof data[i] === "number") {
result += data[i]
} else if (!isNaN(parseInt(data[i].slice(0,2)))) {
result += +data[i].slice(0,2)
}
}
if (result === 0) {
result = "All Is Strings"
}
return `${result}`
}
Map :
• Method Creates A New Array .
• Populated With The Results Of Calling A Provided Function On Every Element .
• In The Calling Array .
Notes :
• Map Return A New Array .
Examples :
• Anonymous Function .
• Named Function .
Map
• Swap cases .
• Inverted numbers .
• Ignore numbers value .
Filter
• Method Creates A New Array .
• With All Elements That Pass The Test Implemented By The Provided Function .
codewars التمجية
موقع لحل المشاكل ر
let sentence = "I Love Foood Code Too Playing Much";
let smallNumbers = sentence.split(" ").filter(function (ele) {
return ele.length <= 4;
}).join(" ")
console.log(smallNumbers);
هون بدي أحذف كل كلمة عدد أحرفها ر
. 4 أكت من
let ignoreNumbers = "Elz123er4o"
let ign = ignoreNumbers.split("").filter(function (ele) {
return isNaN(parseInt(ele))
}).join("")
console.log(ign)
. filter هون بدي أحذف األرقام بطريقة ال
let mix = "A13BS2ZX"
let mixedContent = mix.split("").filter(function (ele) {
return !isNaN(parseInt(ele))
}).map(function (ele) {
return ele * ele
}).join("")
console.log(mixedContent)
مشان طالع األرقام نmap و الfilter هون أستخدمت ال
. وأرصبن بنفسن
Reduce :
• Method executes a reducer function on each element of the array .
• Resulting in a single output value .
Syntax :
Reduce(callBachFunc(Accumulator, Current Val, Current Index, Source Array){},intialValue)
• Accumulator : the accumulated value previously returned in the last invocation .
• Current Val : the current element being processed in the array .
• Inedx : the index of the current element being processed in the array .
o Starts from index 0 if an initiaValue is Provided .
o Otherwise , it starts from index 1 .
• Array : the current array
Reduce :
• Longest Word .
• Remove Characters + Usr Reduce .
forEach :
• method executes a provided function once for each array element .
Note :
• Doesn’t Return Anything [Undefined] .
• Break Will Not Break The Loop .
<ul>
<li class="active">One</li>
<li>Two</li>
<li>Three</li>
</ul>
<div class="content">
<div>Div One</div>
<div>Div Two</div>
<div>Div Three</div>
</div>
. HTML
let allLis = document.querySelectorAll("ul li");
let allDivs = document.querySelectorAll(".content div")
allLis.forEach(function (ele) {
ele.onclick = function () {
// Remove Active Class From All Elements
allLis.forEach(function (ele) {
ele.classList.remove("active");
})
// Add Active Class To Element
this.classList.add("active");
// Hide All Divs
allDivs.forEach(function (ele) {
ele.style.display = "none"
})
}
})
loop ه بتشبه ال يىل ي
يforEach بعدا استخدمت ال، بمصفوفةdiv بمصفوفة وكل الli الش حطيت كل ال ي أول
، مايىل ن
قلتلو مجرد ما أضغط عىل أي وحدة نفذli هون مشت عىل كل ال، بتمش عىل كل العنارص وبتنفذ أمر معي
ي ي
خفيىل
ي بعدا، يىل ضغطت عليه للعنرص يclass = "active" بعدا ضيف، من الكلclass = "active" الش شيل ي أول
. divs كل ال
: التحدي
let myString = "1,2,3,EE,l,z,e,r,o,_,W,e,b,_,S,c,h,o,o,l,2,0,Z";
let solution = myString.split("").filter(function (ele) {
return isNaN(parseInt(ele)) && ele !== "," && ele !== "_"
}).reduce(function (acc, current) {
return `${acc}${current}`
})
console.log(solution)
EElzerowebschoolz النتيجة, هون بس ماعرفت كيف أحذف أول حرف و أخر حرف
let myString = "1,2,3,EE,l,z,e,r,o,_,W,e,b,_,S,c,h,o,o,l,2,0,Z";
][71] to [78
رابط التكليفات عىل الموقع Here :
التكليف : 1
لديك متغت بإسم mixيحتوي عىل . Letters And Numbers •
يجب إستعمال ال Map + Reduceمع ما تعلمته لتخرج بالناتج المطلوب . •
console.log(removeNumbers) // Elzero
التكليف : 2
لديك متغت بإسم myStringيحتوي عىل Lettersمنها المكرر ومنها العادي . •
console.log(emp.join("")) // Elzero
: تحدي3 التكليف
. أخرىArray وبداخلهاArray يحتوي عىلmyArray لديك متغت بإسم •
console.log(flatArray) // Elzero
. األبarray األبن مع الarray هاي مشان اعمل دمج للarray.flat() خاصية ال
let arr1 = [0, 1, 2, [3, 4]];
console.log(arr1.flat()); // [0, 1, 2, 3, 4]
: 4 التكليف
. Letters And Numbers يحتوي عىلnumsAndStrings لديك متغت بإسم •
ن
. بمعن الموجب يكون سالب والسالب يكون موجب يجب عليك عكس األرقام •
: 5 التكليف
. يحتوي عىل مجموعة أرقام زوجية وفرديةnums لديك متغت بإسم •
ن
. 1 لرقمReduce للInitial Value تعيي ال يجب عليك •
ن
مع الAccumulator رقم فردي قم بجمع الReduce يف الCurrent Element إذا كانت قيمة ال •
. Current Element
زوج قم ن ن
مع الAccumulator برصب ال رقم ر يReduce يف الCurrent Element إذا كانت قيمة ال •
. Current Element
let nums = [2, 12, 11, 5, 10, 1, 99];
console.log(result) // 500
Object :
• Intro and What Is Object .
• Testing Window Object .
• Accessing Object .
let user = {
// Properties
theName: "Osama",
theAge: 38,
// Methods
sayHello: function() {
return `Hello`
}
};
console.log(user.theName) // Osama
console.log(user.theAge) // 38
console.log(user.sayHello()) // Hello
Object :
• Dig Deeper .
• Dot Notation vs Bracket Notation .
• Dynamic Property Name .
let user = {
theName: "Osama",
"country of": "Egypt",
};
console.log(user.theName); // فيني بهل الطريقةDot Notation
console.log(user["theName"]); // وهل الطريقة كمانBracket Notation
console.log(user.country of); // مارح يشتغلDot Notation
console.log(user."country of"); // مارح يشتغلDot Notation
console.log(user["country of"]); // بس هون حصرا هيكBracket Notation
. أستدع العنارص ن
فين
ي كيف ي
let myVar = "country"
let user = {
theName: "Osama",
country: "Egypt",
};
console.log(user.country); // Egypt Dot Notation
console.log(user[myVar]); // Egypt Bracket Notation
. هاي كمان حاالت آخرى