0% found this document useful (0 votes)
367 views57 pages

Learn JAVASCRIPT in Arabic 2021 (41 To 80)

The document discusses JavaScript array methods for searching, adding, removing, and manipulating array elements. It provides examples of using length, indexOf(), push(), pop(), shift(), unshift() and other array methods to get the length of an array, add and remove elements, search for elements, and manipulate the order and contents of arrays. The document is part of a series of lessons on JavaScript arrays and their associated methods.

Uploaded by

osama mohamed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
367 views57 pages

Learn JAVASCRIPT in Arabic 2021 (41 To 80)

The document discusses JavaScript array methods for searching, adding, removing, and manipulating array elements. It provides examples of using length, indexOf(), push(), pop(), shift(), unshift() and other array methods to get the length of an array, add and remove elements, search for elements, and manipulate the order and contents of arrays. The document is part of a series of lessons on JavaScript arrays and their associated methods.

Uploaded by

osama mohamed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 57

Elzero Web School

Learn JAVASCRIPT In Arabic 2021 (From 41 To 80) :


[41] Using Length With Array .................................................................. 4
[42] Add And Remove From Array .......................................................... 5
[43] Searching Array ............................................................................... 6
[44] Sorting Arrays .................................................................................. 7
[45] Slicing Array..................................................................................... 7
[46] Joining Arrays .................................................................................. 8
[47] Array Challenge ............................................................................... 9
[40] to [47] ............................................................................................11
[48] Loop - For And Concept Of Loop .....................................................13
[49] Looping On Sequences ....................................................................14
[50] Nested Loops And Trainings ............................................................15
[51] Loop Control - Break_ Continue_ Label ...........................................16
[52] Loop - For Advanced Example .........................................................17
[53] Practice - Add Products To Page ......................................................17
[48] to [53] ............................................................................................18
[54] Loop - While ...................................................................................21
[55] Loop - Do While ..............................................................................22
[56] Loop - Challenge .............................................................................23
[54] to [56] ............................................................................................24
[57] Function Intro And Basic Usage.......................................................24
[58] Function Advanced Examples .........................................................25
[59] Function Return And Use Cases ......................................................26
[60] Function Default Parameters ..........................................................27
[61] Function Rest Parameters ...............................................................27
[62] Function Ultimate Practice .............................................................28
[63] Random Arguments Function Challenge .........................................29
[57] to [63] ............................................................................................30
[64] Anonymous Function And Practice .................................................35
[65] Return Nested Function ..................................................................36
[66] Arrow Function Syntax ...................................................................37
[67] Scope - Global And Local .................................................................38
[68] Scope - Block ..................................................................................39
[69] Scope - Lexical (Static) ....................................................................40
[70] Arrow Function Challenge...............................................................41
[64] to [70] ............................................................................................42
[71] Higher Order Functions - Map .........................................................45
[72] Higher Order Functions - Map Practice ...........................................47
[73] Higher Order Functions - Filter ........................................................48
[74] Higher Order Functions - Filter Practice ..........................................49
[75] Higher Order Functions - Reduce ....................................................50
[76] Higher Order Functions - Reduce Practice .......................................51
[77] Higher Order Functions - ForEach And Practice ...............................52
[78] Higher Order Functions - Challenge.................................................53
[71] to [78] ............................................................................................54
[79] Object - Introduction ......................................................................56
[80] Dot Notation vs Bracket Notation ...................................................57
[41] Using Length With Array
Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Arrays methods :
• Length .
• Index start from 0

// Index Start From 0 [ 0, 1, 2, 3, 4 ]

let myFriends = ["Ahmed", "Mohamed", "Sayed", "Alaa"];


. ‫ ببلش من الواحد‬Length ‫ ببلش من الصفر أما ال‬Index ‫ال‬
let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];
console.log(myFriend.length)
. 4 ‫النتيجة‬
let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];
console.log(myFriend.length); //4
myFriend[6] = "Gamal";
console.log(myFriend);
console.log(myFriend.length); //7
. ‫يىل بدي ياه‬ ‫ن‬ ‫ ر‬Gamal ‫هون طلبت منو يحط اسم‬
‫فبحطىل قيمتي فاضيات ثم بحط األسم ي‬
‫ي‬ ، ‫بالتتيب السادس‬
. ]"Ahmed", "Mohammed", "Ali", "Yosef", empty × 2, "Gamal"[ ‫النتيجة‬
let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];
myFriend[myFriend.length] = "Gamal";
console.log(myFriend)
‫ن‬
. ‫يعن اإلضافة رح تكون باألخت‬
‫ ي‬، ‫ضفىل أسم جديد بطريقة ديناميكة بدل من العد‬
‫ي‬ ‫هون عبقلو‬
. ]"Ahmed", "Mohammed", "Ali", "Yosef", "Gamal"[ ‫النتيجة‬
let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];
myFriend[myFriend.length - 1] = "Gamal";
console.log(myFriend)
‫ ر‬Length ‫ ال‬، ‫هون عبقلو عدل أخر قيمة‬
. ‫ بواحد‬index ‫اكت من ال‬ ‫ي‬
. ]"Ahmed", "Mohammed", "Ali", "Gamal"[ ‫النتيجة‬
let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];
myFriend.length = 2;
console.log(myFriend)
. ]"Ahmed", "Mohammed"[ ‫النتيجة‬
[42] Add And Remove From Array
Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Arrays Methods [Adding And Removing]


• unshift(" ") Add Element To The First .
• push(" ") Add Element To The End .
• shift( ) Remove First Element From Array .
• pop( ) Remove Last Element From Array .

let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];


myFriend.unshift("osama", "Nabil")
console.log(myFriend);
. ‫ وظيفتا تضيف عنارص ن يف بداية المصفوفة‬unshift
. ]"osama", "Nabil", "Ahmed", "Mohammed", "Ali", "Yosef"[ ‫النتيجة‬
let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];
myFriend.push("osama", "Nabil")
console.log(myFriend);
. ‫ وظيفتا تضيف عنارص ن يف نهاية المصفوفة‬psuh
. ]"Ahmed", "Mohammed", "Ali", "Yosef", "osama", "Nabil"[ ‫النتيجة‬
let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];
myFriend.shift();
console.log(myFriend);
. ‫ بتحذف أول عنرص من المصفوفة‬shift
. ]"Mohammed", "Ali", "Yosef"[ ‫النتيجة‬
let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];
let first = myFriend.shift();
console.log(myFriend);
console.log(`First Name is ${first}`);
. ‫يىل حذفتو‬ ‫ن‬
‫وفين اطبع ي‬
‫ي‬ ، ‫اذا حطيتو داخل متغيت بقوم بالمهمة اليوجد أي مشكلة‬
. First Name is Ahmed , ]"Mohammed", "Ali", "Yosef"[ ‫النتيجة‬
let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];
let last = myFriend.pop();
console.log(myFriend);
console.log(`Last Name is ${last}`);
. ‫ بيحذف اخر عنرص ن يف المصفوفة‬pop
. Last Name is Yosef , ]"Ahmed", "Mohammed", "Ali"[ ‫النتيجة‬

[43] Searching Array


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Arrays Methods [Search]:


• indexOf (Search Element , From Index [Opt]) .
• lastindexOf (Search Element, From Index[Opt]) .
• includes (valueToFind, fromIndex [Opt]) [ES7] .

let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef"];


console.log(myFriend.indexOf("Ahmed"));
‫ن‬
. 0 ‫ النتيجة‬، ‫معي مشان يبلش منو‬ ‫ن‬
‫فين حطلو رقم‬
‫ ي‬، ‫ طبعا ببلش من الصفر‬Ahmed ‫بحثىل عىل كلمة‬
‫ي‬ ‫هون عبقلو‬
let myFriend = ["Ahmed", "Mohammed", "Ali", "Yosef", "Ahmed"];
console.log(myFriend.indexOf("Ahmed", 2));
. Ali ‫ رح يبلش من عند‬4 ‫هون النتيجة رح تتطلع‬
let myFriend = ["Ahmed", "Mohammed", "Ahmed", "Yosef", "Ahmed"];
console.log(myFriend.lastIndexOf("Ahmed",-2));
‫ن‬
. Yosef ‫يعن رح يبلش من عند‬
‫ ي‬-2 ، 2 ‫ النتيجة‬، ‫ بيبحث من األخر لألول‬lastIndexof
let myFriend = ["Ahmed", "Mohammed", "Ahmed", "Yosef"];
console.log(myFriend.includes("Yosef"));
. true ‫ النتيجة‬، ‫ بيبحث اذا موجود وال أل‬includes
let myFriend = ["Ahmed", "Mohammed", "Ahmed", "Yosef"];
console.log(myFriend.includes("Yosef",2));
. ‫ وبعد‬2 ‫ المقصود إذا موجودة من ال‬, ‫ ال‬2 ‫ أنو موجود بال‬2 ‫ هون مانو مقصود بال‬، true ‫النتيجة‬
let myFriend = ["Ahmed", "Mohammed", "Ahmed", "Yosef"];
if (myFriend.indexOf("Khir") === -1) {
console.log("Not found")
}
. ‫ إذا العنرص غت موجود‬-1 ‫بيعط‬
‫ي‬ Not found ‫النتيجة‬
console.log(myFriend.indexOf("Khir"))
‫))"‪console.log(myFriend.lastIndexOf("Khir‬‬
‫بيعط قيمة ‪. -1‬‬ ‫يىل عبدور عليه مانو موجود لذلك‬ ‫ن‬
‫ي‬ ‫النتيجة ‪ -1‬بالحالتي ‪ ،‬ألنو ي‬

‫‪[44] Sorting Arrays‬‬


‫رابط الدرس عىل اليوتيوب ‪Here :‬‬
‫رابط الكود عىل الموقع ‪Here :‬‬

‫]‪Arrays Methods [Sort‬‬


‫‪• sort (Function [Opt]) .‬‬
‫‪• reverse .‬‬

‫;]‪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‬‬
‫ن‬
‫فين استخدم تنيناتن بنفس اللحظة ‪.‬‬
‫ي‬

‫‪[45] Slicing Array‬‬


‫رابط الدرس عىل اليوتيوب ‪Here :‬‬
‫رابط الكود عىل الموقع ‪Here :‬‬

‫‪Arrays Methods [Slicing] :‬‬


‫‪• slice (Start [Opt] , End [Opt] Not Including End) .‬‬
‫‪o slice() => All Array .‬‬
‫‪o If Start Is Undefined => 0 .‬‬
‫‪o Negative Count From End .‬‬
o If End Is Undefined || > Indexes => Slice To The End Array.Length .
o Return New Array.
• splice (Start [Mand], Deletecount [Opt] [0 No Remove], The Items To Add [Opt]) .
o If Negative => Start From The End .

. ‫ بس مابأثر عىل المصفوفة األساسية‬، ‫ بتعمل اقتطاع بتحطلو البداية والنهاية اذا بدك‬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"[ ‫النتيجة‬

[46] Joining Arrays


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Arrays Methods [Joining] :


• concat(array, array) => Return A New Array .
• join(Separator) .

‫ن‬
. ‫فين حطا عنارص إضافية‬
‫ طبعا ي‬، ‫ لدمج كذا مصفوفة مع بعض‬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

[47] Array Challenge


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

: ‫تحديات‬
let zero = 0;

let counter = 3;

let my = ["Ahmed", "Mazero", "Elham", "Osama", "Gamal", "Ameer"];

// Write Code Here

console.log(my); // ["Osama", "Elham", "Mazero", "Ahmed"];


console.log(my.slice("????")); // ["Elham", "Mazero"]

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 ‫التكليف‬
. ‫ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب‬ •

‫ن‬
. ‫مختلفتي‬ ‫ن‬
‫بطريقتي‬ ‫يجب عمل الحل والمطلوب‬ •

. ‫ لتنفيذ المطلوب‬Console ‫يمكنك كتابة ما تريد خارج ال‬ •

let myFriends = ["Ahmed", "Elham", "Osama", "Gamal"];


let num = 3;

// Method 1
console.log(myFriends.slice(myFriends.indexOf("Ahmed"),num));
// ["Ahmed", "Elham", "Osama"];

// Method 2
myFriends.pop()
console.log(myFriends); // ["Ahmed", "Elham", "Osama"];

: 2 ‫التكليف‬
. ‫ممنوع إستخدام األرقام نهائيا‬ •

. slice Method‫ممنوع إستخدام ال‬ •

. ‫ لتنفيذ المطلوب‬Console ‫يمكنك كتابة ما تريد خارج ال‬ •

let friends = ["Ahmed", "Eman", "Osama", "Gamal"];

// Write Your Code Here


friends.pop();
friends.shift()
console.log(friends); // ["Eman", "Osama"]
: 3 ‫التكليف‬
. ‫ممنوع إستخدام األرقام نهائيا‬ •

. ‫ واحد فقط لتخرج القيمة المطلوبة‬Code ‫يجب كتابة سطر‬ •

let arrOne = ["C", "D", "X"];


let arrTwo = ["A", "B", "Z"];
let finalArr = [];

// Write One Single Line Of Code

console.log(finalArr.concat(arrOne,arrTwo).sort().reverse());
// ["Z", "X", "D", "C", "B", "A"]

: 4 ‫التكليف‬
. ‫ فقط‬0 ‫ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام الرقم‬ •

. ‫ واحد فقط لتخرج القيمة المطلوبة‬Code ‫يجب كتابة سطر‬ •

let website = "Go";


let words = [`${website}ogle`, "Facebook", ["Elzero", "Web",
"School"]];

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 ‫كل ما عليك هو التأكد أن قيمة متغت‬ •

. ‫يجب عمل الحل بثالث طرق مختلفة‬ •

. ‫ إذا كانت الكلمة موجودة‬Console ‫ ن يف ال‬Found ‫قم بطباعة كلمة‬ •

let needle = "JS";


let haystack = ["PHP", "JS", "Python"];

// Write 3 Solutions
if (haystack.includes(needle)) {
console.log("Found")
}

if(haystack.indexOf(needle) !== -1) {


console.log("Found")
}

if(haystack.lastIndexOf(needle) !== -1) {


console.log("Found")
}

: 6 ‫التكليف‬
. ‫ فيه ما تعلمته لتخرج النتيجة الموجودة ن يف المثال‬Code ‫قم بكتابة‬ •

. ‫يمنع كتابة اي أرقام نهائيا ن يف اي مكان ن يف الحل‬ •

let arr1 = ["A", "C", "X"];


let arr2 = ["D", "E", "F", "Y"];
let allArrs = [];

// Your Code Here


let one = allArrs.concat(arr1,arr2).sort();
let two = one.slice(arr2.length);
let three = two.join("").toLowerCase()

console.log(three) // fxy

[48] Loop - For And Concept Of Loop


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Loop
• for ([initialization]; [condition]; [final-expression]) { statement }
for (let i = 0; i < 10 ; i++) {
console.log(i);
}
‫ن‬ ‫ن‬
‫الش الشط هون حطيت اصغر من عشة‬ ‫ي‬ ‫تان‬
‫ ي‬، ‫الش بحط مرحلة االنطالق‬
‫ي‬ ‫ اول‬، ‫موظفي‬ ‫انا هون بدي عش‬
‫ن‬
. ‫ بعدا شو يساوي‬، ‫موظفي‬ ‫وماحطيت يساوي النو ببلش من الصفر للتسعة هيط بصت عندي عشة‬

[49] Looping On Sequences


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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 = [];

if (typeof myfriend[0] === "string") {


onlynames.push(myfriend[0]);
}
if (typeof myfriend[1] === "string") {
onlynames.push(myfriend[1]);
}
if (typeof myfriend[2] === "string") {
onlynames.push(myfriend[2]);
}
if (typeof myfriend[3] === "string") {
onlynames.push(myfriend[3]);
}
if (typeof myfriend[4] === "string") {
onlynames.push(myfriend[4]);
}
if (typeof myfriend[5] === "string") {
onlynames.push(myfriend[5]);
}
console.log(onlynames)
. ]"Ahmed", "Mohammed", "Ali"[ ‫النتيجة‬
let myfriend = [1, 2, "Ahmed", "Mohammed", 3, "Ali", "Osama", "Yosef"];
let onlynames = [];

for (let i = 0; i < myfriend.length; i++) {


if (typeof myfriend[i] === "string") {
onlynames.push(myfriend[i]);
}
}
console.log(onlynames)
. ‫الطريقة المخترصة بتساوي نفس الطريقة بشعة ودقة‬

[50] Nested Loops And Trainings


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Loop :
• Nested Loop .

let products = ["Keyboard", "Mouse", "Pen", "Pad"];


let colors = ["Red", "Green", "Blue"];
let years = [2020, 2021];
for (let i = 0; i < products.length; i++) {
console.log("*".repeat(10));
console.log(`+ ${products[i]}`);
console.log("$".repeat(10));
console.log("Colors :");
for (let j = 0; j < colors.length; j++) {
console.log(`- ${colors[j]}`);
}
console.log("Years :");
for (let k = 0; k < years.length ; k++) {
console.log(`/ ${years[k]}`)
}
}

[51] Loop Control - Break_ Continue_ Label


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Loop control :
• Break .
• Continue .
• Label .

let products = ["Keypboard", "Mouse", "Pen", "Pad", "Monitor"];

for (let i = 0; i < products.length ; i++) {


console.log(products[i]);
if (products[i] === "Pen") {
break;
}
}
ً
‫طبعا ر‬
. ‫التتيب مهم‬ ، ‫ النتيجة رح يطبع اول تالتة‬، ‫ تستخدم اليقاف الحلقة عند تحقيق الشط‬Break
let products = ["Keypboard","Mouse",10,20,"Pen","Pad",30,"Monitor"];

for (let i = 0; i < products.length ; i++) {


if (typeof products[i] === "number") {
continue;
}
console.log(products[i]);
}
‫ن‬ ‫ هون رح يحذف كل األرقام ر‬، ‫ بيحذف يىل حقق الشط بعدا بكمل‬Continue
if ‫ انتبه يف حال حطيت‬، ‫ويتك الكلمات‬ ‫ي‬
.‫س‬
‫يطبعىل كل ي‬
‫ي‬ ‫ رح‬console ‫بعد ال‬
let products = ["Keypboard", "Mouse", "Pen", "Pad", "Monitor"];
let colors = ["Red", "Green", "Blue"];

mainloop: for (let i = 0; i < products.length ; i++) {


console.log(products[i]);
nestedloop: for (let j = 0; j < colors.length ; j++) {
console.log(`- ${colors[j]}`)
if (colors[j] === "Green") {
break mainloop;
}
}
}
‫ن‬ ‫ن‬ ‫ن‬
‫ هون النتيجة‬، ‫فين بالحلقة الداخلية التحكم بالحلقة األساسية‬
‫بفيدن متل هالحالة ي‬
‫ي‬ ‫سم كل حلقة هادا‬
‫ي‬ ‫يعن‬
‫ ي‬Label
. Keypboard - Red- Green

[52] Loop - For Advanced Example


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Loop for advanced example .

let products = ["Keypboard", "Mouse", "Pen", "Pad", "Monitor"];


let i = 0

for (;;) {
console.log(products[i]);
i++
if (i === products.length) break ;
}
‫ن‬
‫ أما إذا كان داخل الحلقة مارح‬، ‫يحطىل قيمتا‬
‫ي‬ ‫ رح‬i ، ‫ هون يف حال طبعت خارج الحلقة‬، ‫طريقة متقدمة لكتابة الحلقة‬
. i ‫يطبعىل قيمة ال‬
‫ي‬

[53] Practice - Add Products To Page


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Products Practice :

let products =["Keypboard", "Mouse", "Pen", "Pad", "Monitor", "iphone"]


let colors = ["Red", "Green", "Blue"];
let showcount = 4;

document.write(`<h1>Show ${showcount} Products</h1>`);

for (let i = 0; i < showcount; i++) {


document.write(`<div>`);
document.write(`<h3> [${i + 1}] ${products[i]} </h3>`)
‫{ )‪for (let j = 0; j < colors.length ; j++‬‬
‫;)`}]‪document.write(`<p>- ${colors[j‬‬
‫}‬
‫)`>‪document.write(`<p>${colors.join(" / ")}</p‬‬
‫;)`‪document.write(`</div‬‬
‫}‬
‫عمىل ‪.‬‬
‫ي‬ ‫تطبيق‬

‫]‪[48] to [53‬‬
‫رابط التكليفات عىل الموقع ‪Here :‬‬

‫التكليف ‪: 1‬‬
‫ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب ‪.‬‬ ‫•‬

‫يجب طباعة األرقام وإستثناء الرقم ‪ 40‬كما ن يف المثال ‪.‬‬ ‫•‬

‫يجب إستخدام ال ‪ Loop For‬لعمل المطلوب ‪.‬‬ ‫•‬

‫;‪let start = 10‬‬ ‫;‪let end = 100‬‬ ‫;‪let exclude = 40‬‬

‫‪// Output‬‬
‫‪// 10 20‬‬ ‫‪30‬‬ ‫‪50‬‬ ‫‪60‬‬ ‫‪70‬‬ ‫‪80‬‬ ‫‪90‬‬ ‫‪100‬‬

‫{ )‪for (let i = start; i <= end; i += start‬‬


‫{ )‪if (i === exclude‬‬
‫;‪continue‬‬
‫}‬
‫)‪console.log(i‬‬
‫}‬

‫التكليف ‪: 2‬‬
‫ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب ‪.‬‬ ‫•‬

‫يجب طباعة األرقام كما ن يف المثال والتوقف عند الرقم ‪. 3‬‬ ‫•‬

‫إذا كان الرقم اصغر من ‪ 10‬قم بطباعة صفر قبله ‪.‬‬ ‫•‬

‫يجب إستخدام ال ‪ Loop For‬لعمل المطلوب ‪.‬‬ ‫•‬

‫;‪let start = 10‬‬ ‫;‪let end = 0; let stop = 3‬‬

‫‪// 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‬‬
‫ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب ‪.‬‬ ‫•‬

‫يجب طباعة األرقام كما ن يف المثال ‪.‬‬ ‫•‬

‫يجب إستخدام ال ‪ Loop For‬لعمل المطلوب ‪.‬‬ ‫•‬

‫;‪let start = 1‬‬ ‫;‪let end = 6‬‬ ‫;‪let breaker = 2‬‬

‫‪// Output‬‬ ‫‪1‬‬ ‫‪-- 2‬‬ ‫‪-- 4‬‬ ‫‪2‬‬ ‫‪-- 2‬‬ ‫‪-- 4‬‬ ‫‪3‬‬ ‫‪-- 2‬‬ ‫‪-- 4‬‬ ‫‪4‬‬ ‫‪-- 2‬‬

‫{ )‪for (let i = start; i <= end; i++‬‬


‫)‪console.log(i‬‬
‫{ )‪for (let j = breaker; j < end; j += breaker‬‬
‫)`}‪console.log(`-- ${j‬‬
‫}‬
‫}‬

‫التكليف ‪: 4‬‬
‫ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب ‪.‬‬ ‫•‬

‫يجب طباعة األرقام كما ن يف المثال ‪.‬‬ ‫•‬

‫سء آخر ‪.‬‬


‫قم بكتابة ال ‪ Code‬الخاص بك داخل ال ‪ Loop‬فقط وال تقم بالتعديل عىل أي ي‬ ‫•‬

‫يجب إستخدام ال ‪ Loop For‬لعمل المطلوب ‪.‬‬ ‫•‬

‫;‪let index = 10‬‬ ‫;‪let jump = 2‬‬ ‫;‪let end = 0‬‬

‫‪// Output‬‬ ‫‪10‬‬ ‫‪8‬‬ ‫‪6‬‬ ‫‪4‬‬

‫{ );;( ‪for‬‬
‫)‪console.log(index‬‬
‫‪index -= jump‬‬
‫{ )‪if (index === jump‬‬
‫‪break‬‬
‫}‬
‫}‬

‫التكليف ‪: 5‬‬
‫ممنوع إستخدام األرقام نهائيا وال الحروف ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب‬ ‫•‬

‫يجب طباعة األسماء كما ن يف المثال مع وضع رقم قبل كل قيمة بطريقة ديناميكية ‪.‬‬ ‫•‬

‫الن تبدأ بحرف ‪. A‬‬ ‫ر‬


‫قم بإسثتناء األسماء ي‬ ‫•‬

‫يجب إستخدام ال ‪ Loop For‬لعمل المطلوب ‪.‬‬ ‫•‬

‫‪let friends = ["Ahmed", "Sayed", "Eman", "Mahmoud", "Ameer", "Osama",‬‬


‫;]"‪"Sameh‬‬
‫;"‪let letter = "a‬‬
‫;][ = ‪let empty‬‬

‫‪//‬‬ ‫‪Output‬‬
‫‪//‬‬ ‫"‪"1 => Sayed‬‬
‫‪//‬‬ ‫"‪"2 => Eman‬‬
‫‪//‬‬ ‫"‪"3 => Mahmoud‬‬
‫‪//‬‬ ‫"‪"4 => Osama‬‬
‫‪//‬‬ ‫"‪"5 => Sameh‬‬

‫{ )‪for(let i = 0; i < friends.length; i++‬‬


‫{ ))(‪if(friends[i][0] != letter.toUpperCase‬‬
‫;)]‪empty.push(friends[i‬‬
‫}‬
‫}‬

‫{ )‪for(let j = 0; j < empty.length; j++‬‬


‫)`"}]‪console.log(`"${j + 1} => ${empty[j‬‬
‫}‬

‫التكليف ‪: 6‬‬
‫ممنوع إستخدام األرقام أو الحروف نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب‪.‬‬ ‫•‬

‫المطلوب بإستخدام ال ‪ Loop‬تحويل الحروف الكبت لصغتة والعكس‪ .‬شاهد المثال ‪.‬‬ ‫•‬

‫يجب إستخدام ال ‪ Loop For‬لعمل المطلوب ‪.‬‬ ‫•‬

‫;‪let start = 0‬‬


let swappedName = "elZerO";
let changeChar = [];

// Output
// "ELzERo"

for(let i = start; i < swappedName.length; i++) {


if(swappedName[i] == swappedName[i].toLowerCase()) {
changeChar.push(swappedName[i].toUpperCase());
} else {
changeChar.push(swappedName[i].toLowerCase());
}
}
console.log(changeChar.join(""))

: 7 ‫التكليف‬
. ‫ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب‬ •

‫ن‬
. ‫إثني للنهاية‬ ‫المطلوب طباعة األرقام فقط من أول الرقم‬ •

. 1 ‫ يتجاهل الرقم‬Loop ‫فكر قليال بالمنطق كيف ستجعل ال‬ •

. ‫ لعمل المطلوب‬Loop For ‫يجب إستخدام ال‬ •

let start = 0;
let mix = [1, 2, 3, "A", "B", "C", 4];

// Output
// 2
// 3
// 4

for(let i = start; i < mix.length; i++) {


if(typeof mix[i] == "string" || mix[i] == 1) {
continue;
}
console.log(mix[i])
}

[54] Loop - While


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬
Loop
• While .

let products = ["Keypboard", "Mouse", "Pad", "Monitor", "iphone"];


let index = 0;

while (index < 10) {


console.log(index);
index +=1; // index++
if (index === 3) {
break;
}
}
. ‫ بعدا بوقف الكود‬index = 3 ‫يىل ال‬
‫الش بيطبع ي‬
‫ي‬ ‫ هون أول‬، for ‫ بتشبه كتت ال‬While
let products = ["Keypboard", "Mouse", "Pad", "Monitor", "iphone"];
let index = 0;

while (index < products.length) {


console.log(products[index]);
index +=1; // index++
}

[55] Loop - Do While


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Loop
• Do / while

let products = ["Keypboard", "Mouse", "Pad", "Monitor", "iphone"];


let index = 0;

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

[56] Loop - Challenge


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

: ‫تحديات‬
/*
Loop Challenge
*/

let myAdmins = ["Ahmed", "Osama", "Sayed", "Stop", "Samera"];


let myEmployees = ["Amgad", "Samah", "Ameer", "Omar", "Othman",
"Amany", "Samia", "Anwar"];
let adminsArray = [];

document.write(`<div>We Have X Admins</div>`);

for(let i = 0; i < myAdmins.length; i++) {


if(myAdmins[i] == "Stop") {
break;
}
adminsArray.push(myAdmins[i])
}

document.write(`<div>We Have ${adminsArray.length} Admins</div>`);

document.write(`<hr>`);

for(let i = 0; i < adminsArray.length; i++) {


document.write(`<div>`)
document.write(`The Admin For Team ${i + 1} Is ${adminsArray[i]}`)
document.write(`<h3>Team Members</h3>`)
let k = 0;
for(let j = 0; j < myEmployees.length; j++) {
if(myEmployees[j][0] == myAdmins[i][0]) {
k++
document.write(`<p> - ${k} ${myEmployees[j]}</p>`)
}
}
document.write(`</div>`)
document.write(`<hr>`)
}
‫هون ضىل عندي مشكلة ر‬
. ‫التقيم قبل كل أسم‬ ‫ي‬

[54] to [56]
Here : ‫رابط التكليفات عىل الموقع‬

: 1 ‫التكليف‬
. ‫ممنوع إستخدام األرقام نهائيا ويمكنك إستخدام قيم المتغتات مع ما تعلمته لتنفيذ المطلوب‬ •

‫ر‬
. A ‫الن تبدأ بحرف‬
‫يجب عدم طباعة األرقام وال االسماء ي‬ •

. ‫ لعمل المطلوب‬Loop While ‫يجب إستخدام ال‬ •

let friends = ["Ahmed", "Sayed", "Ali", 1, 2, "Mahmoud", "Amany"];


let index = 0;
let counter = 0;
let emptyArray = []

// Output
// "1 => Sayed"
// "2 => Mahmoud"

for(let i = index; i < friends.length; i++) {


if(friends[i][counter] == "A" || typeof friends[i] == "number") {
continue;
}
emptyArray.push(friends[i])
}

for(let i = index; i < emptyArray.length; i++) {


console.log(`${i + 1} => ${emptyArray[i]}`);
}

[57] Function Intro And Basic Usage


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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 ‫النتيجة‬

[58] Function Advanced Examples


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Function advanced examples


function sayHello(userName, age) {
if (age < 20) {
console.log(`App is not good for ${userName} is age ${age}`)
} else {
console.log(`Hello ${userName} your age is ${age}`);
}
}
sayHello("Osama", 30);
sayHello("Mohammed", 10);
sayHello("Ahmed", 40);
.undefined ‫يحطىل‬ ‫ن‬ ‫نف حال وضع ن‬
‫ي‬ ‫ رح‬Argument ‫ يف حال ماحطيت ال‬، Parameter ‫تني‬ ‫ي‬
function generateYears(start, end, exclude) {
for (let i = start; i <= end; i++) {
if (i === exclude) {
continue;
}
console.log(i)
}
}
generateYears(1998, 2021, 2020);
‫ن‬
‫ النو يف‬end ‫ حطيتلو اصغر او يساوي ال‬، )‫يىل انا محدد (بداية – نهاية – غت مطلوبة‬
‫يحطىل السنوات ي‬
‫ي‬ ‫هون بدي تابع‬
. ‫حال حطيتلو اصغر بس مارح يدخل السنة األختة‬

[59] Function Return And Use Cases


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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 ‫النتيجة رح يوصل لل‬

[60] Function Default Parameters


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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 ‫النتيجة‬

[61] Function Rest Parameters


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬
Function
• Rest Parameters .
• Only One Allowed .
• Must Be Last Element .

. 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 ‫ النتيجة‬، ‫بفيدن متل هل الحالة عندي عدد كبت من األرقام الزم أجمعن‬
‫ي‬

[62] Function Ultimate Practice


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Function advanced practice :


• Parameters .
• Default .
• Rest .
• Loop .
• Condition .

function showInfo(usn = "un", ag = "Un", Sa = 0, sh = "Yes", ...sk) {


document.write(`<div>`)
document.write(`<h2>Welcome ${usn}</h2>`)
document.write(`<p>Age: ${ag}</p>`)
document.write(`<p>Salary: $${Sa}<p>`)
if (sh === "Yes") {
if (sk.length > 0) {
document.write(`<p>Skills: ${sk.join(" | ")}</p>`)
for (let i = 0; i < sk.length; i++) {
document.write(`<p>My Skill is ${sk[i]}</p>`)
}
} else {
document.write(`<p>Skills: No Skills</p>`)
}
} else {
document.write(`<p>Skills is Hidden</p>`)
}
document.write(`</div>`)
}
showInfo("Mohammed", 23, 20, "Yes", "Html", "Css", "JS")
.‫الش السابق‬
‫ي‬ ‫مثال متقدم للتدرب عىل‬

[63] Random Arguments Function Challenge


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

: ‫تحديات‬
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";

console.log(`Hello ${nam}, Your Age Is ${num}, You Are ${bool} For


Hire`);
}

showDetails("Osama", 38, true);


// "Hello Osama, Your Age Is 38, You Are Available For Hire"
showDetails(38, "Osama", true);
// "Hello Osama, Your Age Is 38, You Are Available For Hire"
showDetails(true, 38, "Osama");
‫"‪// "Hello Osama, Your Age Is 38, You Are Available For Hire‬‬
‫;)‪showDetails(false, "Osama", 38‬‬
‫"‪// "Hello Osama, Your Age Is 38, You Are Not Available For Hire‬‬

‫]‪[57] to [63‬‬
‫رابط التكليفات عىل الموقع ‪Here :‬‬

‫التكليف ‪: 1‬‬
‫قم بإنشاء ‪ Function‬تظهر رسالة ترحيب لكل شخص بأي إسم تريده ‪.‬‬ ‫•‬

‫ن‬
‫إثني ‪ Parameters‬وهما إسم الشخص والنوع سواء ذكر أو انن ‪.‬‬ ‫ال ‪ Function‬تقبل‬ ‫•‬

‫قم بطباعة رسالة ترحيبية للشخص فيها إسمه وقبل اإلسم ‪ Mr‬أو ‪ Miss‬بناء عىل نوع الشخص سواء ذكر أو‬ ‫•‬
‫انن ‪.‬‬
‫لو لم يكتب الشخص نوعه ويفضل عدم ذكره ال تطبع ‪ Mr‬وال ‪ Miss‬وإطبع الرسالة ر‬
‫التحيبية فقط ‪.‬‬ ‫•‬

‫{ )‪function sayHello(theName, theGender‬‬


‫"‪theGender === "Male‬‬
‫)`}‪? console.log(`Hello Mr ${theName‬‬
‫"‪: theGender === "Female‬‬
‫)`}‪? console.log(`Hello Miss ${theName‬‬
‫)`}‪: console.log(`Hello ${theName‬‬
‫}‬

‫‪// Needed Output‬‬


‫"‪sayHello("Osama", "Male"); // "Hello Mr Osama‬‬
‫"‪sayHello("Eman", "Female"); // "Hello Miss Eman‬‬
‫"‪sayHello("Sameh"); // "Hello Sameh‬‬

‫التكليف ‪: 2‬‬
‫قم بإنشاء ‪ Function‬تقوم بعمل عمليات حسابية مختلفة ‪.‬‬ ‫•‬
‫ن‬
‫والثان ونوع العملية الحسابية ‪.‬‬
‫ي‬ ‫ال ‪ Function‬تقبل ثالثة ‪ Parameters‬هم الرقم األول‬ ‫•‬

‫وه تحتوي عىل ‪ 3‬عمليات فقط | ‪add‬‬ ‫ن‬ ‫ر‬


‫الن تكتبها عىل الرقمي ي‬
‫ال ‪ Function‬تقوم بعمل العملية الحسابية ي‬ ‫•‬
‫) ‪. )subtract | multiply‬‬
‫ن‬
‫الرقمي ‪.‬‬ ‫ن‬
‫يف حالة لم يتم كتابة نوع العملية الحسابية قم بجمع‬ ‫•‬
‫ن‬ ‫ن‬ ‫ن‬
‫الثان غت‬
‫ي‬ ‫يف حالة تم كتابة رقم واحد فقط داخل ال ‪ Function‬قم بإظهار رسالة يف ال ‪ Console‬تفيد بأن الرقم‬ ‫•‬
‫موجود ‪.‬‬
function calculate(firstNum, secondNum, operation) {
if(operation === "subtract") {
console.log(firstNum - secondNum)
} else if (operation === "multiply") {
console.log(firstNum * secondNum)
} else if ((operation === "add" || operation === undefined) &&
secondNum !== undefined) {
console.log(firstNum + secondNum)
} else {
console.log('Second Number Not Found')
}
}

// 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 ‫قم بإنشاء‬ •

. a, b, c ‫ وتكون أسمائهم‬.‫ اإلسم والسن والحالة‬Parameters ‫ تقبل ثالثة‬Function ‫ال‬ •

. ‫ للحالة‬Boolean ‫ للسن و‬Number ‫ لإلسم و‬String ‫أنواع البيانات ستكون‬ •

‫ن‬
. ‫معي‬ ‫عشوان وليس لهم ترتيب‬ ‫ بشكل‬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";

console.log(`Hello ${nam}, Your Age Is ${num}, You Are ${bool} For


Hire`);
}

showDetails("Osama", 38, true);


// "Hello Osama, Your Age Is 38, You Are Available For Hire"
showDetails(38, "Osama", true);
// "Hello Osama, Your Age Is 38, You Are Available For Hire"
showDetails(true, 38, "Osama");
// "Hello Osama, Your Age Is 38, You Are Available For Hire"
showDetails(false, "Osama", 38);
// "Hello Osama, Your Age Is 38, You Are Not Available For Hire"

: 5 ‫التكليف‬
. HTML ‫ ن يف صفحة ال‬Select Box ‫ تقوم بإنشاء‬Function ‫قم بإنشاء‬ •
‫ن‬
. ‫والثان هو عام النهاية‬ ‫ن‬
‫ي‬ ‫ األول هو عام البداية‬Parameters ‫إثني‬ ‫ تقبل منك‬Function ‫ال‬ •

‫ كل واحد فيهم فيه العام ر‬Options ‫ يحتوي عىل‬Select Box ‫قم بإنشاء ال‬
. ‫حن النهاية‬ •

. ‫شاهد المثال رلتى المطلوب‬ •

function createSelectBox(startYear, endYear) {


document.write(`<select>`)
for (let i = startYear; i <= endYear; i++) {
document.write(`<option value = ${i}>${i}</option>`)
}
document.write(`</select>`)
}
createSelectBox(2000, 2021);
: ‫المثال‬

<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 ‫غت معروف كم عدد ال‬ •

. ‫ ال تستعمله مع األرقام‬String ‫ عبارة عن‬Function ‫ ألمستخدم ن يف ال‬Argument ‫إذا كان ال‬ •

‫ قبل بدأ عملية ن‬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])
}
}
}

multiply(10, 20); // 200


multiply("A", 10, 30); // 300
multiply(100.5, 10, "B"); // 1000
.‫ن يف مشكلة‬
function multiply(...numbe) {
let result = 1;
for (let i = 0; i < numbe.length; i++) {
if (typeof numbe[i] === "string") {
continue
} else {
result *= Math.floor(numbe[i])
}
}
console.log(result)
}

multiply(10, 20); // 200


multiply("A", 10, 30); // 300
multiply(100.5, 10, "B"); // 1000
. ‫ عندك‬Logical ‫ عفت الحل القديم مشان تشوف مدى تطور ال‬، ‫هادا الحل صحيح مية بالمية‬

[64] Anonymous Function And Practice


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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 ‫ مشان تعرف الحكمة من وضع‬، ‫يف أمثلة متقدمة لبعدين‬
. ‫وحدة‬

[65] Return Nested Function


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Function
• Function Inside Function .
• Return Function .

function sayMassage(Fname, Lname) {


let message = "hello";
function concatmsg() {
message = `${message} ${Fname} ${Lname}`
}
concatmsg();
return message;
}
console.log(sayMassage("Mohammed", "Khir"))
. hello Mohammed Khir ‫المثال األول النتيجة‬
function sayMassage(Fname, Lname) {
let message = "hello";
function concatmsg() {
return `${message} ${Fname} ${Lname}`
}
return concatmsg();
}
console.log(sayMassage("Mohammed", "Khir"))
‫ن‬
. ‫الثان نفس النتيجة ولكن بطريقة مختلفة‬
‫ي‬ ‫المثال‬
function sayMassage(Fname, Lname) {
let message = "hello";
function concatmsg() {
function getfullname() {
return `${Fname} ${Lname}`
}
return `${message} ${getfullname()}`
}
return concatmsg();
}
console.log(sayMassage("Mohammed", "Khir"))
. ‫ نفس النتيجة‬، ‫المثال الثالث‬

[66] Arrow Function Syntax


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Function
• Arrow Function .
o Regular Vs Arrow [Param + No Param] .
o Multiple Lines .

function print() {
return 10;
}
console.log(print())

let print = function () {


return 10;
};
console.log(print())
ً ‫ن‬
. ‫ طبعا الزم شغل كل واحد لحال‬، ‫بيعطون نفس النتيجة‬
‫ي‬
let print = () => 10;
let print = _ => 10;
console.log(print())
‫ن‬ ‫ن‬ ‫ن‬
‫الش يف حال ماكان يف‬
‫ي‬ ‫التني نفس‬ ‫ هون بالمثال‬، ‫ هاي شبه مخترصة بتساوي الكود أوضح‬Arrow Function
. parameter
let print = function (num) {
return num;
}
let print = (num) => num;
let print = num => num;
console.log(print(100))
ً ‫ بس نف حال كان عندي ر‬، ‫تالتي بيعطو نفس النتيجة‬
‫رن‬
. ‫ حرصا الزم حط أقواس‬Parameter ‫أكت من‬ ‫ي‬
let print = function (num1, num2) {
return num1 + num2;
}
let print = (num1, num2) => num1 + num2;

console.log(print(100, 50))
‫ن‬
. ‫التني بيعطو نفس النتيجة‬

[67] Scope - Global And Local


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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()
.‫س‬
‫ مارح يطبع ي‬, ‫هيك رح يصت عندي مشكلة‬

[68] Scope - Block


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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‬أو الحلقة ‪. .......‬‬

‫)‪[69] Scope - Lexical (Static‬‬


‫رابط الدرس عىل اليوتيوب ‪Here :‬‬
‫رابط الكود عىل الموقع ‪Here :‬‬

‫‪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 ‫يطلعىل مشكلة مشان ال‬
‫ي‬ ‫رح‬

[70] Arrow Function Challenge


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

: ‫تحديات‬
: ‫التحدي األول‬
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‬‬

‫• ال ‪ Function‬ستحتوي عىل أربعة ‪ Functions‬فرعية باألسماء التالية ‪namePattern,‬‬


‫‪. ageWithMessage, countryTwoLetters, fullDetails‬‬
‫ن‬
‫مقطعي هكذا ‪ Osama Mohamed‬وترجع اإلسم‬ ‫• ‪ namePattern‬تقبل منك اإلسم مكون من‬
‫هكذا ‪ Osama M.‬شاهد المثال لتفهم أكت ‪.‬‬

‫• ‪ 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
}

console.log(getDetails("Osama Mohamed", "38 Is My Age", "Egypt"));


// Hello Osama M., Your Age Is 38, You Live In EG

console.log(getDetails("Ahmed ali", "32 Is The Age", "Syria"));


// Hello Ahmed A., Your Age Is 32, You Live In SY

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}`;

console.log(urlCreate("https", "elzero", "org"));


// https://www.elzero.org

‫ تحدي‬03 ‫التكليف‬
. Arrow Function Syntax ‫ التالية ل‬Function ‫قم بتحويل ال‬
. Currying Function Technique ‫إقرأ عن‬

function checker(zName) {

return function (status) {

return function (salary) {

return status === "Available" ? `${zName}, My Salary Is ${salary}` :


`Iam Not Avaialble`;

};

};

console.log(checker("Osama")("Available")(4000)); // My Salary Is 4000

console.log(checker("Ahmed")("Not Available")()); // Iam Not Avaialble

. 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 ‫ال‬ •

. ‫ عبارة عن أرقام قم بجمعهم‬Arguments ‫إذا كانت جميع ال‬ •

‫ن‬
‫ ال‬String ‫تستثن أي‬ ‫ تحتوي عىل أرقام قم بإستخراج االرقام منهم وقم بجمعهم وطبعا‬Strings ‫إذا كانت‬ •
‫ي‬
. ‫يحتوي عىل أرقام‬
. All Is Strings ‫ تقوم بطباعة رسالة‬String ‫ عبارة عن‬Arguments ‫إذا كانت جميع ال‬ •

. Test Cases ‫شاهد المثال رلتى ال‬ •

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}`
}

console.log(specialMix(10, 20, 30)); // 60


console.log(specialMix("10Test", "Testing", "20Cool")); // 30
console.log(specialMix("Testing", "10Testing", "40Cool")); // 50
console.log(specialMix("Test", "Cool", "Test")); // All Is Strings
‫ ولكن أخر نتيجة ماحليتا بطريقة ر‬، ‫الحل صحيح‬
. ‫أحتافية‬

[71] Higher Order Functions - Map


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Higher Order Function :


• Is A Function That Accepts Function As Parameters And/Or Returns A Function .

Map :
• Method Creates A New Array .
• Populated With The Results Of Calling A Provided Function On Every Element .
• In The Calling Array .

Syntax map(callBackFunction(Element, Index, Array) { }, thisArg) :


• Element => The Current Element Being Processed In The Array .
• Index => The Index Of The Current Element Being Processed In The Array .
• Array => The Current Array .

Notes :
• Map Return A New Array .

Examples :
• Anonymous Function .
• Named Function .

let myNums = [1, 2, 3, 4, 5, 6];


let newArray = [];
for (let i = 0; i < myNums.length; i++) {
newArray.push(myNums[i] + myNums[i]);
}
console.log(newArray)
. ‫ النتيجة بضاعف األرقام‬، ‫ حطيت مصفوفة فاضية‬، ‫هون عندي مصفوفة بدي أجمع كل رقم مع حالو‬
let myNums = [1, 2, 3, 4, 5, 6];

let addSelf = myNums.map(function(element, index, arr) {


console.log(`Current Element ${element}`);
console.log(`Current Index ${index}`);
console.log(`Array ${arr}`);
console.log(`This ${this}`)
}, 20)
‫بتعط وين ترتيب‬
‫ي‬ ‫ مانها إجبارية‬index ‫ ال‬، ‫بتعط العنرص‬
‫ي‬ ‫ إجبارية‬element ‫ ال‬، ‫ بتطالع ثالث شغالت‬map ‫ال‬
‫ن‬ ً
. ‫كيق‬
‫ طبعا هدول بسميهن عىل ي‬، array ‫بتعط كامل ال‬
‫ي‬ arr ‫ ال‬، ‫العنرص‬
let myNums = [1, 2, 3, 4, 5, 6];
let addSelf = myNums.map(function(ele) {
return ele + ele
})
console.log(addSelf)
. ‫ مشان ضاعف األرقام بشعة كبتة‬map ‫هاي بطريقة ال‬
let myNums = [1, 2, 3, 4, 5, 6];
let addSelf = myNums.map((ele) => ele + ele )
console.log(addSelf)
. Arrow Function ‫نفس فوق بس بطريقة ال‬
let myNums = [1, 2, 3, 4, 5, 6];
function addition(ele) {
return ele + ele;
}
let add = myNums.map(addition)
console.log(add)
. ‫طريقة آخرى لجمع كل رقم مع نفسه‬

[72] Higher Order Functions - Map Practice


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Map
• Swap cases .
• Inverted numbers .
• Ignore numbers value .

let swappingCases = "elZERo";


let arr = [];
for (let i = 0; i < swappingCases.length; i++) {
if (swappingCases[i] === swappingCases[i].toLowerCase()) {
arr.push(swappingCases[i].toUpperCase())
} else {
arr.push(swappingCases[i].toLowerCase())
}
}
console.log(arr.join(""))
. ‫ هاي آحدى الطرق‬, ‫تمرين بدي حول األحرف الكبتة لصغتة والصغتة لكبتة‬
let swappingCases = "elZERo";
let sw = swappingCases.split("").map(function (ele) {
return ele === ele.toUpperCase() ?ele.toLowerCase():ele.toUpperCase()
}).join("")
console.log(sw)
. ‫ المخترصة‬if ‫ وال‬map ‫هاي نفس فوق بس بطريقة ال‬
let invertedNumbers = [1, -10, -20, 15, 100, -30];
let inver = invertedNumbers.map(function (ele) {
return -ele
})
console.log(inver)
‫ن‬
‫ يف طريقة طويلة أنو إذا أصغر من الصفر‬، ‫ويىل موجب يصت سالب‬
‫يىل رقمو سالب ًيصت موجب ي‬
‫تمرين بدي ساوي ي‬
. ‫معناتا سالب وبالعكس موجب طبعا طريقة ضعيفة وغبية شوي‬
let ignoreNumbers = "Elz123er5o";
let ignor = ignoreNumbers.split("").map(function (ele) {
return isNaN(parseInt(ele)) ? ele : "" ;
}).join("")
console.log(ignor)
. ‫تمرين مشان أتجاهل األرقام وعيف األحرف‬
let ignoreNumbers = "Elz123er5o";
let ignor = ignoreNumbers
.split("")
.map((ele) => (isNaN(parseInt(ele)) ? ele : "" ))
.join("")
console.log(ignor);
. Arrow Function ‫نفس فوق بس هاي بطريقة ال‬

[73] Higher Order Functions - Filter


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Filter
• Method Creates A New Array .
• With All Elements That Pass The Test Implemented By The Provided Function .

let numbers = [10, 20, 21, 14, 16, 29]

let addMap = numbers.map(function (ele) {


return ele + ele
} )
console.log(addMap)

let addFilter = numbers.filter(function (ele) {


return ele + ele
} )
console.log(addFilter)
‫ وظيفتا‬filter ‫ رح تحطا نفسا ألنو ال‬filter ‫ أما ال‬، ‫النتيجة أول وحدة رح تجمع كل رقم وتحط المصفوفة بعد الجمع‬
. ‫تقال إذا شغلة معينة محققة للشط عيفا إذا أل كبا‬
let friends = ["Ahmed", "Sameh", "Sayed", "Asmaa", "Amgad", "Israa"]
let filterFriends = friends.filter(function (ele) {
return ele.startsWith("A")
})
console.log(filterFriends)
. ‫يمش عليه‬ ‫ن‬
‫معي‬ ‫ حطلو رسط‬filter ‫ هاي وظيفة ال‬، ]"Ahmed", "Asmaa", "Amgad"[ ‫النتيجة‬
‫ي‬
let numbers = [11, 20, 2, 5, 17, 10];
let evenNumbers = numbers.filter(function (ele) {
return ele % 2 === 0
})
console.log(evenNumbers)
. ]10 ,2 ,20 [ ‫النتيجة‬

[74] Higher Order Functions - Filter Practice


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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 ‫هون أستخدمت ال‬
. ‫وأرصبن بنفسن‬

[75] Higher Order Functions - Reduce


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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

let nums = [10, 20, 15, 30];


let add = nums.reduce(function (acc, current, index, arr) {
console.log(`Acc : ${acc}`)
console.log(`Current Element : ${current}`)
console.log(`Current Element Index : ${index}`)
console.log(`Array : ${arr}`)
console.log(acc + current);
console.log(`########`)
return acc + current
})
20 ‫ه ال‬
‫ ي‬current ‫ ال‬، 10 ‫ه‬‫يىل ي‬
‫ هاي القيمة األول ي‬acc ‫ ال‬، ‫ هون وظفتا مشان أجمع عنارص المصفوفة‬reduce ‫ال‬
‫ن‬
. 75 ‫ النتيجة النهائية‬، ‫ نفس المصفوفة‬arr ‫ ال‬، 1 ‫يعن‬
‫ ي‬current ‫ الرقم تبع ال‬index ‫ ال‬،
let nums = [10, 20, 15, 30];
let add = nums.reduce(function (acc, current, index, arr) {
return acc + current
},5);
console.log(add)
.5‫ه‬
‫ ي‬acc ‫يعتت ال‬
‫ هون رح ر‬80 ‫النتيجة‬

[76] Higher Order Functions - Reduce Practice


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

Reduce :
• Longest Word .
• Remove Characters + Usr Reduce .

let theBiggest = ["Bla", "Propaganda", "Other", "AAA", "Battery", "Test


", "Prpaganda_Two"];

let check = theBiggest.reduce(function (acc, current) {


return acc.length > current.length ? acc : current
})
console.log(check)
. Prpaganda_Two ‫ه‬
‫يىل ي‬
‫أكت كلمة ي‬
‫هون عبقلو بدي ر‬
let removeChars = ["E", "@", "@", "L", "Z", "@", "@", "E", "@", "R", "@
", "O"];

let remove = removeChars.filter(function (ele) {


return ele != "@"
// return !ele.startsWith("@")
}).join("")
console.log(remove)
‫رن‬
‫ التبدو‬، ‫ لكن هذه طريقة مخترصة‬join ‫جمعي مع بعض بطريقة ال‬ ‫ بعدا‬، ‫نظام‬ ‫كلش مانو حرف‬ ‫هون بدي أحذف‬
‫ي‬ ‫ي‬
. ‫محتف ن يف حال حليت بهل الطريقة‬
‫ر‬

let remove = removeChars.filter(function (ele) {


return ele !== "@"
}).reduce(function (acc, current) {
return `${acc}${current}`
})
console.log(remove)
‫هاي الطريقة أكت ر‬
. ‫أحتافية‬
[77] Higher Order Functions - ForEach And Practice
Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

forEach :
• method executes a provided function once for each array element .

Syntax forEach(callBackFunction(Element, Index, Array) { }, thisArg) .


• Element : The current element being processed in the array .
• Index : The index of the current element being processed in the array .
• Array : The current array .

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 ‫كل ال‬

[78] Higher Order Functions - Challenge


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

: ‫التحدي‬
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";

let result = myString


.split(",")
.filter((ele) => isNaN(parseInt(ele)))
.map(function(ele, ind, arr) {
arr.length = arr.length--
return ele === "_" ? " " : ele;
// return ele.replace("_", " ");
})
.reduce((acc, cur) => acc + cur)
.slice(true)
‫)‪console.log(result‬‬
‫هادا الحل الجديد صحيح مية بالمية الحمدهلل ‪ ،Elzero Web School‬عفت القديم بس مشان تشوف كيف عبيتطور‬
‫مج عندك ‪.‬‬
‫الت ر ي‬
‫التفكت ر‬

‫]‪[71] to [78‬‬
‫رابط التكليفات عىل الموقع ‪Here :‬‬

‫التكليف ‪: 1‬‬
‫لديك متغت بإسم ‪ mix‬يحتوي عىل ‪. Letters And Numbers‬‬ ‫•‬

‫قم بإنشاء ‪ Array‬جديدة بواسطة ال ‪. Map‬‬ ‫•‬

‫يجب عليك إستثناء األرقام نهائيا من النتيجة ‪.‬‬ ‫•‬

‫يجب عليك عمل ‪ Concatenate‬لل ‪ Letters‬لتخرج بالنتيجة ‪.‬‬ ‫•‬

‫يجب إستعمال ال ‪ Map + Reduce‬مع ما تعلمته لتخرج بالناتج المطلوب ‪.‬‬ ‫•‬

‫ممنوع إستخدام ال ‪ Join‬أو ‪. Filter‬‬ ‫•‬

‫;]"‪let mix = [1, 2, 3, "E", 4, "l", "z", "e", "r", 5, "o‬‬

‫{ )‪let removeNumbers = mix.map(function(ele‬‬


‫"" ‪return isNaN(parseInt(ele)) ? ele :‬‬
‫)‪}).reduce((acc, cur) => acc + cur‬‬

‫‪console.log(removeNumbers) // Elzero‬‬

‫التكليف ‪: 2‬‬
‫لديك متغت بإسم ‪ myString‬يحتوي عىل ‪ Letters‬منها المكرر ومنها العادي ‪.‬‬ ‫•‬

‫قم بإنشاء ‪ Array‬جديدة بواسطة ال ‪. Filter‬‬ ‫•‬

‫يجب عليك إستثناء ال ‪ Letters‬المكررة نهائيا من النتيجة ‪.‬‬ ‫•‬

‫يجب عليك عمل ‪ Concatenate‬لل ‪ Letters‬لتخرج بالنتيجة ‪.‬‬ ‫•‬

‫;"‪let myString = "EElllzzzzzzzeroo‬‬


‫][ = ‪let emp‬‬

‫‪let unRepeat = myString‬‬


.split("")
.filter((e) => emp.indexOf(e) === -1 ? emp.push(e) : "" )

console.log(emp.join("")) // Elzero

: ‫ تحدي‬3 ‫التكليف‬
. ‫ أخرى‬Array ‫ وبداخلها‬Array ‫ يحتوي عىل‬myArray ‫لديك متغت بإسم‬ •

. Reduce ‫ جديدة بواسطة ال‬Array ‫قم بإنشاء‬ •

. ‫ واحدة‬Array ‫ رلتجع ب‬Array ‫ لل‬Flatten ‫يجب عليك عمل‬ •

. ‫ لتخرج بالنتيجة‬Letters ‫ لل‬Concatenate ‫يجب عليك عمل‬ •

. ‫ نهائيا‬Array.flat() ‫ممنوع إستخدام‬ •

let myArray = ["E", "l", "z", ["e", "r"], "o"];

let flatArray = myArray.map(function(ele) {


return ele.length > 1 ? ele.reduce((acc, cur) => acc + cur) : ele
}).reduce((acc, cur) => acc + cur)

console.log(flatArray) // Elzero
. ‫ األب‬array ‫ األبن مع ال‬array ‫ هاي مشان اعمل دمج لل‬array.flat() ‫خاصية ال‬
let arr1 = [0, 1, 2, [3, 4]];
console.log(arr1.flat()); // [0, 1, 2, 3, 4]

let arr2 = [0, 1, 2, [[[3, 4]]]];


console.log(arr2.flat(2)); // [0, 1, 2, [3, 4]]

: 4 ‫التكليف‬
. Letters And Numbers ‫ يحتوي عىل‬numsAndStrings ‫لديك متغت بإسم‬ •

. Filter + Map ‫ جديدة بواسطة ال‬Array ‫قم بإنشاء‬ •

. ‫ من النتيجة‬Letters ‫يجب عليك إستثناء ال‬ •

‫ن‬
. ‫بمعن الموجب يكون سالب والسالب يكون موجب‬ ‫يجب عليك عكس األرقام‬ •

. ‫ ما تريد‬Map + Filter + ‫يجب عليك إستخدام ال‬ •

let numsAndStrings = [1, 10, -10, -20, 5, "A", 3, "B", "C"];


let inverNumbers = numsAndStrings
.filter(ele => !isNaN(parseInt(ele)))
.map(ele => -ele)

console.log(inverNumbers) // [-1, -10, 10, 20, -5, -3]

: 5 ‫التكليف‬
. ‫ يحتوي عىل مجموعة أرقام زوجية وفردية‬nums ‫لديك متغت بإسم‬ •

. ‫ فقط‬Reduce ‫قم بإيجاد النتيجة النهائية المطلوبة بواسطة إستخدام ال‬ •

‫ن‬
. 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];

let result = nums.reduce((a, c) =>


c % 2 === 0 ? a * c : a + c
,1)

console.log(result) // 500

[79] Object - Introduction


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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

[80] Dot Notation vs Bracket Notation


Here : ‫رابط الدرس عىل اليوتيوب‬
Here : ‫رابط الكود عىل الموقع‬

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
. ‫هاي كمان حاالت آخرى‬

You might also like