From c636461c0b6615f0b316883f7d7a6e2c608d7ffb Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Mon, 6 Jan 2020 06:04:22 +0300 Subject: [PATCH 01/54] create array with values example fix --- 05_Day/05_day_arrays.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index e0e327f..a7e2482 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -80,19 +80,19 @@ console.log('Numbers:', numbers) console.log('Number of numbers:', numbers.length) console.log('Fruits:', fruits) -console.log('Number of fruits:', len(fruits)) +console.log('Number of fruits:', fruits.length) console.log('Vegetables:', vegetables) -console.log('Number of vegetables:', len(vegetables)) +console.log('Number of vegetables:', vegetables.length) console.log('Animal products:', animalProducts) -console.log('Number of animal products:', len(animalProducts)) +console.log('Number of animal products:', animalProducts.length) -console.log('Web technologies:', web_techs) -console.log('Number of web technologies:', len(webTechs)) +console.log('Web technologies:', webTechs) +console.log('Number of web technologies:', webTechs.length) console.log('Countries:', countries) -console.log('Number of countries:', len(countries)) +console.log('Number of countries:', countries.length) ``` ```sh @@ -721,4 +721,4 @@ const webTechs = [ 🎉 CONGRATULATIONS ! 🎉 -[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](#) \ No newline at end of file +[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](#) From 148abe07925ffd249490b9be51a1d5230b26eb7b Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Mon, 6 Jan 2020 06:11:38 +0300 Subject: [PATCH 02/54] array different data types example fix --- 05_Day/05_day_arrays.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index e0e327f..eca9ffa 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -114,11 +114,11 @@ Number of countries: 5 ```js const arr = [ - 'Asabeneh', - 250, - True, - { country: 'Finland', city: 'Helsinki' }, - (skills: ['HTML', 'CSS', 'JS', 'React', 'Python']) + 'Asabeneh', + 250, + true, + { country: 'Finland', city: 'Helsinki' }, + { skills: ['HTML', 'CSS', 'JS', 'React', 'Python'] } ] // arr containing different data types console.log(arr) ``` @@ -721,4 +721,4 @@ const webTechs = [ 🎉 CONGRATULATIONS ! 🎉 -[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](#) \ No newline at end of file +[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](#) From 8ec8b3650b43d49228b3591f74ba0a3dd3515cbe Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Mon, 6 Jan 2020 06:20:04 +0300 Subject: [PATCH 03/54] array using splits example fix to avoid using already defined text property definition --- 05_Day/05_day_arrays.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index e0e327f..d63cfda 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -137,9 +137,9 @@ let companiesString = 'Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon' const companies = companiesString.split(',') console.log(companies) // ["Facebook", " Google", " Microsoft", " Apple", " IBM", " Oracle", " Amazon"] -let text = +let txt = 'I love teaching and empowering people. I teach HTML, CSS, JS, React, Python.' -const words = text.split(' ') +const words = txt.split(' ') console.log(words) // the text has special characters think how you can just get only the words @@ -721,4 +721,4 @@ const webTechs = [ 🎉 CONGRATULATIONS ! 🎉 -[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](#) \ No newline at end of file +[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](#) From e8765bd580eb23964649db933b98be645368a970 Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Mon, 6 Jan 2020 06:32:47 +0300 Subject: [PATCH 04/54] array items using index examples fix --- 05_Day/05_day_arrays.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index e0e327f..dffd393 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -165,7 +165,7 @@ let lastFruit = fruits[3] console.log(lastFruit) // lemon // Last index can be calculated as follows -let lastIndex = len(fruits) - 1 +let lastIndex = fruits.length - 1 lastFruit = fruits[lastIndex] console.log(lastFruit) // lemon ``` @@ -179,7 +179,7 @@ console.log(numbers[0]) // -> 0 console.log(numbers[5]) // -> 100 let lastIndex = numbers.length - 1; -console.log(numbers[lastIndex]) -> 100 +console.log(numbers[lastIndex]) // -> 100 ``` ```js @@ -199,7 +199,7 @@ console.log(webTechs[0]) // -> HTML console.log(webTechs[6]) // -> MongoDB let lastIndex = webTechs.length - 1 -console.log(webTechs[lastIndex]) -> MongoDB +console.log(webTechs[lastIndex]) // -> MongoDB ``` ```js @@ -222,7 +222,7 @@ console.log(countries[0]) // -> Albania console.log(countries[10]) // -> Kenya let lastIndex = countries.length - 1; -console.log(countries[lastIndex]) -> // Kenya +console.log(countries[lastIndex]) // -> Kenya ``` ```js @@ -242,7 +242,7 @@ console.log(shoppingCart[0]) // -> Milk console.log(shoppingCart[7]) // -> Sugar let lastIndex = shoppingCart.length - 1; -console.log(shoppingCart[lastIndex]) -> // Sugar +console.log(shoppingCart[lastIndex]) // -> Sugar ``` ### Modifying array element @@ -721,4 +721,4 @@ const webTechs = [ 🎉 CONGRATULATIONS ! 🎉 -[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](#) \ No newline at end of file +[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](#) From 4f7583ab95c4aa2f4cd2c5a499d8a348789f2190 Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Mon, 6 Jan 2020 07:42:20 +0300 Subject: [PATCH 05/54] static values with fill example fix --- 05_Day/05_day_arrays.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index 57065a7..f8eff88 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -309,10 +309,10 @@ const eightXvalues = Array(8).fill('X') // it creates eight element values console.log(eightXvalues) // ['X', 'X','X','X','X','X','X','X'] const eight0values = Array(8).fill(0) // it creates eight element values -console.log(eight0Values) // [0, 0, 0, 0, 0, 0, 0, 0] +console.log(eight0values) // [0, 0, 0, 0, 0, 0, 0, 0] const four4values = Array(4).fill(4) // it creates 4 element values -console.log(four4Values) // [4, 4, 4, 4, 4, 4, 4, 4] +console.log(four4values) // [4, 4, 4, 4, 4, 4, 4, 4] ``` #### Concatenating array using concat From f318661ce093b922cadd225e4ea5439abeeec63b Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Mon, 6 Jan 2020 07:54:13 +0300 Subject: [PATCH 06/54] slice array elements example fix --- 05_Day/05_day_arrays.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index 57065a7..7b75362 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -490,8 +490,8 @@ Slice: To cut out a multiple items in range. It takes two parameters:starting an ```js const numbers = [1,2,3,4,5] - console.log(numbers.slice() // -> it copies all item - console.log(numbers.slice(0) // -> it copies all item + console.log(numbers.slice()) // -> it copies all item + console.log(numbers.slice(0)) // -> it copies all item console.log(numbers.slice(0, numbers.length)) // it copies all item console.log(numbers.slice(1,4)) // -> [2,3,4] // it doesn't include the ending position ``` From 4790a2317e609ea915040254e3724381c305e266 Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Mon, 6 Jan 2020 07:59:46 +0300 Subject: [PATCH 07/54] splice method in array example fix --- 05_Day/05_day_arrays.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index f8eff88..8187a88 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -503,7 +503,7 @@ Splice: It takes three parameters:Starting position, number of times to be remov ```js const numbers = [1, 2, 3, 4, 5]; - console.log(numbers.splice() // -> remove all items + console.log(numbers.splice()) // -> remove all items console.log(numbers.splice(0,1)) // remove the first item console.log(numbers.splice(3, 3, 6, 7, 8)) // -> [1,2,6,7,8] //it removes two item and replace three items From 327d9b411b30510eb4850353d0e0726564443fb2 Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Mon, 6 Jan 2020 08:05:21 +0300 Subject: [PATCH 08/54] unshift example fix --- 05_Day/05_day_arrays.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index f8eff88..bf9dc68 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -570,7 +570,7 @@ unshift: Adding array element in the beginning of the array ```js const numbers = [1, 2, 3, 4, 5] -numbers.unshift(0) // -> remove one item from the beginning +numbers.unshift(0) // -> add one item from the beginning console.log(numbers) // -> [0,1,2,3,4,5] ``` From 23bf1f4349c1f6fbe02debfdd55e309456987c40 Mon Sep 17 00:00:00 2001 From: Walelgne Ermias Date: Mon, 6 Jan 2020 14:06:47 +0200 Subject: [PATCH 09/54] day 5 text, typ and grammar patched --- 05_Day/05_day_arrays.md | 48 ++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index cc0d815..8e93028 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -35,13 +35,13 @@ ## Arrays -In contrast to variables array can store _multiple values_. Each value in an array has an _index_ and each index has _a reference in a memory address_. Each value can be accessed by using their _indexes_. The index of an array starts from _zero_ and the last element is less by one from the length of the array. +In contrast to variables, an array can store _multiple values_. Each value in an array has an _index_, and each index has _a reference in a memory address_. Each value can be accessed by using their _indexes_. The index of an array starts from _zero_, and the last element is less by one from the length of the array. -Array is a collection of different data types which are ordered and changeable(modifiable). Allows duplicate element and different data types. An array can be empty or it may have different data type values +An array is a collection of different data types which are ordered and changeable(modifiable). An array allows storing duplicate elements and different data types. An array can be empty, or it may have different data type values. ### How to create an empty array -In JavaScript we can create array in different ways. Let us different ways to create an array. +In JavaScript, we can create an array in different ways. Let us different ways to create an array. - Using Array constructor @@ -125,7 +125,7 @@ console.log(arr) ### Creating an array using split -As we have seen in earlier section, we can split a string at different position and we can change to an array. Let us see the examples blow. +As we have seen in the earlier section, we can split a string at different positions, and we can change to an array. Let us see the examples below. ```js let js = 'JavaScript' @@ -148,7 +148,7 @@ console.log(words) ### Accessing array items using index -We access each element in an array using their index. An array index start from 0. The picture below show clearly the starting of the index. +We access each element in an array using their index. An array index starts from 0. The picture below clearly shows the starting of the index. ![arr index](../images/array_index.png) @@ -247,7 +247,7 @@ console.log(shoppingCart[lastIndex]) // -> Sugar ### Modifying array element -An array is mutable(modifiable). Once an array is created we can modify the contents or the array elements. +An array is mutable(modifiable). Once an array is created, we can modify the contents of the array elements. ```js const numbers = [1, 2, 3, 4, 5] @@ -283,7 +283,7 @@ console.log(countries) ### Methods to manipulate array -There are different methods to manipulate an array. These are some of the available methods to deal with arrays:_Array,length, concat, indexOf, slice, splice, join, toString, includes, lastIndexOf, isArray, fill, push, pop, shift, unshift_ +There are different methods to manipulate an array. These are some of the available methods to deal with arrays:_Array, length, concat, indexOf, slice, splice, join, toString, includes, lastIndexOf, isArray, fill, push, pop, shift, unshift_ #### Array Constructor @@ -305,13 +305,13 @@ fill: Fill all the array elements with a static value const arr = Array() // creates an an empty array console.log(arr) -const eightXvalues = Array(8).fill('X') // it creates eight element values +const eightXvalues = Array(8).fill('X') // it creates eight element values filled with 'X' console.log(eightXvalues) // ['X', 'X','X','X','X','X','X','X'] -const eight0values = Array(8).fill(0) // it creates eight element values +const eight0values = Array(8).fill(0) // it creates eight element values filled with '0' console.log(eight0values) // [0, 0, 0, 0, 0, 0, 0, 0] -const four4values = Array(4).fill(4) // it creates 4 element values +const four4values = Array(4).fill(4) // it creates 4 element values filled with '4' console.log(four4values) // [4, 4, 4, 4, 4, 4, 4, 4] ``` @@ -330,7 +330,7 @@ console.log(thirdList) // [1, 2, 3, 4, 5, 6] ```js const fruits = ['banana', 'orange', 'mango', 'lemon'] // array of fruits const vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] // array of vegetables -const fruitsAndVegetables = fruits.concat(vegetables) +const fruitsAndVegetables = fruits.concat(vegetables) // concatinate the two arrays console.log(fruitsAndVegetables) ``` @@ -345,7 +345,7 @@ Length:To know the size of the array ```js const numbers = [1, 2, 3, 4, 5] -console.log(numbers.length) // -> 5 +console.log(numbers.length) // -> 5 is the size of the array ``` #### Getting index an element in arr array @@ -361,7 +361,7 @@ console.log(numbers.indexOf(1)) // -> 0 console.log(numbers.indexOf(6)) // -> -1 ``` -Check an element if it exist in an array +Check an element if it exist in an array. - Check items in a list @@ -393,12 +393,12 @@ if(indexOfAvocado!= -1){ #### Getting last index of an element in array -lastIndexOf:Give the position of the last item in the array. If it exist it returns the index else it returns -1. +lastIndexOf: It gives the position of the last item in the array. If it exist, it returns the index else it returns -1. ```js const numbers = [1, 2, 3, 4, 5, 3, 1, 2] -console.log(numbers.lastIndexOf(2)) // -7 +console.log(numbers.lastIndexOf(2)) // 7 console.log(numbers.lastIndexOf(0)) // -1 console.log(numbers.lastIndexOf(1)) // 6 console.log(numbers.lastIndexOf(4)) // 3 @@ -455,7 +455,7 @@ console.log(names.toString()) // Asabeneh,Mathias,Elias,Brook #### Joining array elements -join:To join the elements of the array, the argument passed in the join method will be joined in the array and return as a string. By default it joins with a comma but we can pass different string parameter which can be joined between the items. +join: It used to join the elements of the array, the argument passed in the join method will be joined in the array and return as a string. By default, it joins with a comma, but we can pass different string parameter which can be joined between the items. ```js const numbers = [1, 2, 3, 4, 5] @@ -485,7 +485,7 @@ console.log(webTechs.join(' # ')) // "HTML # CSS # JavaScript # React # Redux # #### Slice array elements -Slice: To cut out a multiple items in range. It takes two parameters:starting and ending position. It doesn't include the ending position +Slice: To cut out a multiple items in range. It takes two parameters:starting and ending position. It doesn't include the ending position. ```js const numbers = [1,2,3,4,5] @@ -498,7 +498,7 @@ Slice: To cut out a multiple items in range. It takes two parameters:starting an #### Splice method in array -Splice: It takes three parameters:Starting position, number of times to be removed and number items to be added. +Splice: It takes three parameters:Starting position, number of times to be removed and number of items to be added. ```js const numbers = [1, 2, 3, 4, 5]; @@ -511,7 +511,7 @@ Splice: It takes three parameters:Starting position, number of times to be remov #### Adding item to an array using push -Push: adding item in the end. To add item to the end of an existing array we use the push method +Push: adding item in the end. To add item to the end of an existing array we use the push method. ```js // syntax @@ -544,7 +544,7 @@ console.log(fruits) // ['banana', 'orange', 'mango', 'lemon', 'apple', 'lime'] #### Removing the end element using pop -Pop: Removing item in the end +Pop: Removing item in the end. ```js const numbers = [1, 2, 3, 4, 5] @@ -555,7 +555,7 @@ console.log(numbers) // -> [1,2,3,4] #### Removing an element from the beginning -shift: Removing one array element in the beginning of the array +shift: Removing one array element in the beginning of the array. ```js const numbers = [1, 2, 3, 4, 5] @@ -566,7 +566,7 @@ console.log(numbers) // -> [2,3,4,5] #### Add an element from the beginning -unshift: Adding array element in the beginning of the array +unshift: Adding array element in the beginning of the array. ```js const numbers = [1, 2, 3, 4, 5] @@ -577,7 +577,7 @@ console.log(numbers) // -> [0,1,2,3,4,5] #### Reversing array order -reverse: reverse the order of an array +reverse: reverse the order of an array. ```js const numbers = [1, 2, 3, 4, 5] @@ -591,7 +591,7 @@ console.log(numbers) // [1, 2, 3, 4, 5] #### Sorting elements in array -sort: arrange array elements in ascending order. Sort takes a call back function, we wil see how we use sort with call back function in the coming sections. +sort: arrange array elements in ascending order. Sort takes a call back function, we will see how we use sort with call back function in the coming sections. ```js const webTechs = [ From 5a95f04fb0adf3cfc8b7b0752969db4938e882f0 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Mon, 6 Jan 2020 15:40:02 +0200 Subject: [PATCH 10/54] restructuring --- 01_Day/01_day_starter/index.html | 2 + 02_Day/02_day_starter/index.html | 2 + 03_Day/03_day_starter/index.html | 2 + .../04_day_starter/04_day_starter/index.html | 15 ------ .../04_day_starter/scripts/main.js | 1 - 04_Day/04_day_starter/index.html | 2 +- 04_Day/04_day_starter/scripts/main.js | 4 +- 05_Day/05_day_starter/index.html | 2 + 05_Day/05_day_starter/scripts/main.js | 1 + readMe.md | 51 +++++++++++-------- 10 files changed, 44 insertions(+), 38 deletions(-) delete mode 100644 04_Day/04_day_starter/04_day_starter/index.html delete mode 100644 04_Day/04_day_starter/04_day_starter/scripts/main.js diff --git a/01_Day/01_day_starter/index.html b/01_Day/01_day_starter/index.html index ac4827d..43831f6 100644 --- a/01_Day/01_day_starter/index.html +++ b/01_Day/01_day_starter/index.html @@ -6,6 +6,8 @@ +

30DaysOfJavaScript:03 Day

+

Introduction

diff --git a/02_Day/02_day_starter/index.html b/02_Day/02_day_starter/index.html index b34fd01..03ea938 100644 --- a/02_Day/02_day_starter/index.html +++ b/02_Day/02_day_starter/index.html @@ -6,6 +6,8 @@ +

30DaysOfJavaScript:02 Day

+

Data types

diff --git a/03_Day/03_day_starter/index.html b/03_Day/03_day_starter/index.html index feb3027..3db517d 100644 --- a/03_Day/03_day_starter/index.html +++ b/03_Day/03_day_starter/index.html @@ -6,6 +6,8 @@ +

30DaysOfJavaScript:03 Day

+

Booleans, undefined, null, date object

diff --git a/04_Day/04_day_starter/04_day_starter/index.html b/04_Day/04_day_starter/04_day_starter/index.html deleted file mode 100644 index 30d37fc..0000000 --- a/04_Day/04_day_starter/04_day_starter/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - 30DaysOfJavaScript - - - - - - - - - - \ No newline at end of file diff --git a/04_Day/04_day_starter/04_day_starter/scripts/main.js b/04_Day/04_day_starter/04_day_starter/scripts/main.js deleted file mode 100644 index 7762908..0000000 --- a/04_Day/04_day_starter/04_day_starter/scripts/main.js +++ /dev/null @@ -1 +0,0 @@ -// this is your main.js script \ No newline at end of file diff --git a/04_Day/04_day_starter/index.html b/04_Day/04_day_starter/index.html index 3936631..30d37fc 100644 --- a/04_Day/04_day_starter/index.html +++ b/04_Day/04_day_starter/index.html @@ -2,7 +2,7 @@ - 30DaysOfJavaScript:04 Day + 30DaysOfJavaScript diff --git a/04_Day/04_day_starter/scripts/main.js b/04_Day/04_day_starter/scripts/main.js index 7762908..ad0c1eb 100644 --- a/04_Day/04_day_starter/scripts/main.js +++ b/04_Day/04_day_starter/scripts/main.js @@ -1 +1,3 @@ -// this is your main.js script \ No newline at end of file +// this is your main.js script + +alert('Open the browser console whenever you work on JavaScript') \ No newline at end of file diff --git a/05_Day/05_day_starter/index.html b/05_Day/05_day_starter/index.html index b7bf583..8f138fb 100644 --- a/05_Day/05_day_starter/index.html +++ b/05_Day/05_day_starter/index.html @@ -6,6 +6,8 @@ +

30DaysOfJavaScript:05 Day

+

Arrays

diff --git a/05_Day/05_day_starter/scripts/main.js b/05_Day/05_day_starter/scripts/main.js index c6045c8..50cc07e 100644 --- a/05_Day/05_day_starter/scripts/main.js +++ b/05_Day/05_day_starter/scripts/main.js @@ -1,2 +1,3 @@ console.log(countries) +alert('Open the browser console whenever you work on JavaScript') alert('Open the console and check if the countries has been loaded') \ No newline at end of file diff --git a/readMe.md b/readMe.md index a55b117..b15d8e1 100644 --- a/readMe.md +++ b/readMe.md @@ -227,10 +227,15 @@ If you installed visual studio code, let us start using it. Open the visual studio code by double-clicking the visual studio icon. When you open it, you will get this kind of interface. Try to interact with the labeled icons. ![Vscode ui](./images/vscode_ui.png) + ![Vscode add project](./images/adding_project_to_vscode.png) + ![Vscode open project](./images/opening_project_on_vscode.png) + ![script file](images/scripts_on_vscode.png) + ![running script](./images/running_script.png) + ![coding running](./images/launched_on_new_tab.png) ## Adding JavaScript to a web page @@ -298,6 +303,7 @@ This is how we write the internal script most of the time. Writing the JavaScrip ``` Open the browser console to see the output from the console.log() + ![js code from vscode](./images/js_code_vscode.png) ### External script @@ -320,7 +326,7 @@ External scripts in the head - ``` External scripts in the body @@ -336,7 +342,7 @@ External scripts in the body // Here is the recommended place to put the external script - ``` Open the browser console to see the output from the console.log() @@ -361,10 +367,11 @@ console.log('Hello, World!') - ``` Your main.js file should be below all other scripts. Watch out your exercise needs to understand this line. + ![Multiple Script](./images/multiple_script.png) ## Introduction to Data types @@ -403,8 +410,8 @@ A boolean data type is either a True or False value. **Example:** ```js - true # if the light on ,the value is true - false # if the light off, the value is False + true // if the light on ,the value is true + false // if the light off, the value is False ``` ### Undefined @@ -431,8 +438,8 @@ To check the data type of a certain data type, we use the **typeof** operator. S ```js console.log(typeof 'Asabeneh') // string console.log(typeof 5) // number -console.log(typeof true ) // boolean -console.log(typeof null) // object type +console.log(typeof true ) // boolean +console.log(typeof null) // object type console.log(typeof undefined) // undefined ``` @@ -445,6 +452,7 @@ There are two ways of commenting: - _Multiline commenting_ ```js +// commenting the code itself with a single comment // let firstName = 'Asabeneh'; single line comment // let lastName = 'Yetayeh'; single line comment ``` @@ -466,10 +474,10 @@ Variables are _containers_ of data. Variables used to _store_ data in a memory l For a variable that changes at a different time, we use _let_. If the data does not change at all, we use _const_. For example, PI, country name, gravity do no change, and we can use *const*. -* A JavaScript variable name should not begin with a number. -* A JavaScript variable name does not allow special characters except dollar sign and underscore. -* A JavaScript variable name follows a camelCase convention. -* A JavaScript variable name should not have space between words. +- A JavaScript variable name should not begin with a number. +- A JavaScript variable name does not allow special characters except dollar sign and underscore. +- A JavaScript variable name follows a camelCase convention. +- A JavaScript variable name should not have space between words. The following are valid examples of JavaScript variables. Valid variables in JavaScript: @@ -516,21 +524,24 @@ Let us declare variables with different data types. To declare a variable, we ne ```js // Declaring different variables of different data types -let firstName = 'Asabeneh' // first name of a person -let lastName = 'Yetayeh' // last name of a person -let country = 'Finland' // country -let city = 'Helsinki' // capital city -let age = 100 // age in years + +let firstName = 'Asabeneh' // first name of a person +let lastName = 'Yetayeh' // last name of a person +let country = 'Finland' // country +let city = 'Helsinki' // capital city +let age = 100 // age in years let isMarried = true + console.log(firstName, lastName, country, city, age, isMarried); //Asabeneh, Yetayeh, Finland, Helsinki, 100, True // Declaring variables with number values -const gravity = 9.81; // earth gravity in m/s2 -const boilingPoint = 100; // water boiling point, temperature in oC -const PI = 3.14; // geometrical constant +const gravity = 9.81 // earth gravity in m/s2 +const boilingPoint = 100 // water boiling point, temperature in oC +const PI = 3.14 // geometrical constant + console.log(gravity, boilingPoint, PI); // 9.81, 100, 3.14 // Variables can also be declaring in one line separated by comma -let name = 'Asabeneh', //name of a person +let name = 'Asabeneh', // name of a person job = 'teacher', live = 'Finland'; console.log(name, job, live); From cccf0203cc14b997fadfc848f2725a69df759293 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Mon, 6 Jan 2020 15:53:06 +0200 Subject: [PATCH 11/54] restructuring --- 01_Day/Day -1 – 1.png | Bin 76287 -> 0 bytes 02_Day/02_day_data_types.md | 2 +- 03_Day/03_booleans_operators_date.md | 2 +- 03_Day/day_1_3.png | Bin 77446 -> 0 bytes 04_Day/04_day_conditionals.md | 10 ++++++---- 04_Day/day_1_4.png | Bin 76863 -> 0 bytes 05_Day/05_day_arrays.md | 7 ++++--- 7 files changed, 12 insertions(+), 9 deletions(-) delete mode 100644 01_Day/Day -1 – 1.png delete mode 100644 03_Day/day_1_3.png delete mode 100644 04_Day/day_1_4.png diff --git a/01_Day/Day -1 – 1.png b/01_Day/Day -1 – 1.png deleted file mode 100644 index dd583c71949a66a79ec46198434079262aa3fa02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76287 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⁣b|u4>pQy(8){FAt0(B_Sbl9qQlc8F{ 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 diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 17f3f1f..1245460 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -4,7 +4,7 @@ [<< Day 1](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/readMe.md) | [Day 3 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) -- -![Thirty Days Of JavaScript](./day_1_2.png) +![Thirty Days Of JavaScript](../images/banners/day_1_2.png) - [📔 Day 2](#%f0%9f%93%94-day-2) - [Data types](#data-types) diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 508cec1..85e8324 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -3,7 +3,7 @@ [<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) | [Day 4 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) -- -![Thirty Days Of JavaScript](./day_1_3.png) +![Thirty Days Of JavaScript](../images/banners/day_1_3.png) - [📔 Day 3](#%f0%9f%93%94-day-3) - [Booleans](#booleans) diff --git a/03_Day/day_1_3.png b/03_Day/day_1_3.png deleted file mode 100644 index 1268d2ca6c95226adbb99d8d75073f073d423a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77446 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 AqW}N^ diff --git a/04_Day/04_day_conditionals.md b/04_Day/04_day_conditionals.md index 624505a..4d179be 100644 --- a/04_Day/04_day_conditionals.md +++ b/04_Day/04_day_conditionals.md @@ -3,7 +3,7 @@ [<< Day 3](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) | [Day 5 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) -- -![Thirty Days Of JavaScript](./day_1_4.png) +![Thirty Days Of JavaScript](../images/banners/day_1_4.png) - [📔 Day 4](#%f0%9f%93%94-day-4) - [Conditionals](#conditionals) @@ -193,9 +193,11 @@ switch (weather) { default: console.log(' No need for rain coat.') } + // Switch More Examples -var dayUserInput = prompt('What day is today ?') -var day = dayUserInput.toLowerCase() +let dayUserInput = prompt('What day is today ?') +let day = dayUserInput.toLowerCase() + switch (day) { case 'monday': console.log('Today is Monday') @@ -218,10 +220,10 @@ switch (day) { case 'sunday': console.log('Today is Sunday') break - default: console.log('It is not a week day.') } + ``` ### Ternary Operators diff --git a/04_Day/day_1_4.png b/04_Day/day_1_4.png deleted file mode 100644 index d5262c6baf63a6966176739a89d23234d83d8aae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76863 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 XPNNTD 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 oCjM{Z88#u~NPn< Date: Mon, 6 Jan 2020 16:00:52 +0200 Subject: [PATCH 12/54] restructuring --- 01_Day/varaible.js | 17 +++++++++++++++++ 04_Day/04_day_conditionals.md | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 01_Day/varaible.js diff --git a/01_Day/varaible.js b/01_Day/varaible.js new file mode 100644 index 0000000..f5872af --- /dev/null +++ b/01_Day/varaible.js @@ -0,0 +1,17 @@ +// Declaring different variables of different data types +let firstName = 'Asabeneh' // first name of a person +let lastName = 'Yetayeh' // last name of a person +let country = 'Finland' // country +let city = 'Helsinki' // capital city +let age = 100 // age in years +let isMarried = true + +// Declaring variables with number values +const gravity = 9.81 // earth gravity in m/s2 +const boilingPoint = 100 // water boiling point, temperature in oC +const PI = 3.14 // geometrical constant + +// Variables can also be declaring in one line separated by comma +let name = 'Asabeneh', //name of a person + job = 'teacher', + live = 'Finland' diff --git a/04_Day/04_day_conditionals.md b/04_Day/04_day_conditionals.md index 4d179be..88e74c2 100644 --- a/04_Day/04_day_conditionals.md +++ b/04_Day/04_day_conditionals.md @@ -291,7 +291,7 @@ isRaining Enter a number: 2 2 is an even number - Enter a number 9 + Enter a number: 9 9 is is an odd number. ``` From d2dc384833d398b93711c6c8e86d3016e31889ed Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Mon, 6 Jan 2020 22:51:23 +0200 Subject: [PATCH 13/54] day 6 --- .gitignore | 2 +- 02_Day/02_day_data_types.md | 2 +- 03_Day/03_booleans_operators_date.md | 2 +- 04_Day/04_day_conditionals.md | 2 +- 05_Day/05_day_arrays.md | 33 ++- 06_Day/06_day_loops.md | 338 ++++++++++++++++++++++++ 06_Day/06_day_starter/data/countries.js | 195 ++++++++++++++ 06_Day/06_day_starter/index.html | 17 ++ 06_Day/06_day_starter/scripts/main.js | 2 + 9 files changed, 584 insertions(+), 9 deletions(-) create mode 100644 06_Day/06_day_loops.md create mode 100644 06_Day/06_day_starter/data/countries.js create mode 100644 06_Day/06_day_starter/index.html create mode 100644 06_Day/06_day_starter/scripts/main.js diff --git a/.gitignore b/.gitignore index 91a80f9..698c285 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ playground /playground .DS_Store test.js +res.md day3.md day4.md day5.md @@ -13,7 +14,6 @@ day9.md day10.md 01_02_03_days_backup.md test.md -06_Day 07_Day 08_Day 09_Day diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 1245460..989492d 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -862,7 +862,7 @@ let numInt = parseInt(num) console.log(numInt) // 9 ``` -🌕 You are awesome. You have just completed day 2 challenge and you are two steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. +🌕 You are awesome. You have just completed day 2 challenges and you are two steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. # 💻 Day 2: Exercises diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 85e8324..945446d 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -481,7 +481,7 @@ const minutes = now.getMinutes() // return number (0 -59) console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 ``` -🌕 You have boundless energy. You have just completed day 3 challenge and you are three steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. +🌕 You have boundless energy. You have just completed day 3 challenges and you are three steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. # 💻 Day 3: Exercises diff --git a/04_Day/04_day_conditionals.md b/04_Day/04_day_conditionals.md index 88e74c2..1fffa42 100644 --- a/04_Day/04_day_conditionals.md +++ b/04_Day/04_day_conditionals.md @@ -237,7 +237,7 @@ isRaining : console.log('No need for a rain coat.') ``` -🌕 You are extraordinary and you have a remarkable potential. You have just completed day 4 challenge and you are four steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. +🌕 You are extraordinary and you have a remarkable potential. You have just completed day 4 challenges and you are four steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. # 💻 Exercise : Conditionals diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index c62e19b..a060e01 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -29,6 +29,7 @@ - [Add an element from the beginning](#add-an-element-from-the-beginning) - [Reversing array order](#reversing-array-order) - [Sorting elements in array](#sorting-elements-in-array) + - [Array of arrays](#array-of-arrays) - [💻 Exercise](#%f0%9f%92%bb-exercise) # 📔 Day 5 @@ -612,7 +613,27 @@ webTechs.reverse() // after sorting we can reverse it console.log(webTechs) // ["Redux", "React", "Node", "MongoDB", "JavaScript", "HTML", "CSS"] ``` -🌕 You are diligent and you have already achieved quite a lot. You have just completed day 5 challenge and you are 5 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. +### Array of arrays + +Array can store different data types including an array itself. Let us create an array of arrays + +```js +const firstNums = [1, 2, 3] +const secondNums = [1, 4, 9] + +const arrayOfArray = [[1, 2, 3], [1, 2, 3]] +console.log(arrayOfArray[0]) // [1, 2, 3] + + const frontEnd = ['HTML', 'CSS', 'JS', 'React', 'Redux'] + const backEnd = ['Node','Express', 'MongoDB'] + const fullStack = [frontEnd, backEnd] + console.log(fullStack) // [["HTML", "CSS", "JS", "React", "Redux"], ["Node", "Express", "MongoDB"]] + console.log(fullStack.length) // 2 + console.log(fullStack[0]) // ["HTML", "CSS", "JS", "React", "Redux"] + console.log(fullStack[1]) // ["Node", "Express", "MongoDB"] +``` + +🌕 You are diligent and you have already achieved quite a lot. You have just completed day 5 challenges and you are 5 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. ## 💻 Exercise @@ -691,7 +712,7 @@ const webTechs = [ - Remove 'Honey' if you are allergic to honey - modify tea to 'Green Tea' 1. In countries array check if 'Ethiopia' exists in the array if it exists print 'ETHIOPIA'. If it does not exist add to the countries list. -1. In the webTechs array check if Sass exists in the array if it exists print 'Sass is a CSS preprocess'. If it does not exist add Sass to the array. +1. In the webTechs array check if Sass exists in the array and if it exists print 'Sass is a CSS preprocess'. If it does not exist add Sass to the array and print the array. 1. Concatenate the following two variables and store it in a fullStack variable. ```js @@ -705,7 +726,7 @@ const webTechs = [ ["HTML", "CSS", "JS", "React", "Redux", "Node", "Express", "MongoDB"] ``` -1. The following is a list of 10 students ages: +1. The following is an array of 10 students ages: ```js const ages = [19, 22, 19, 24, 20, 25, 26, 24, 25, 24] @@ -717,8 +738,10 @@ const webTechs = [ - Find the average age(all items divided by number of items) - Find the range of the ages(max minus min) - Compare the value of (min - average) and (max - average), use *abs()* method -1. Find the middle country(ies) in the [countries list](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) -1. Divide the countries list into two equal lists if it is even. If countries array is not even one more country for the first half. +1.Slice the first ten countries from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) +1. Find the middle country(ies) in the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) +1. Find the middle country(ies) in the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) +1. Divide the countries array into two equal arrays if it is even. If countries array is not even , one more country for the first half. 🎉 CONGRATULATIONS ! 🎉 diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md new file mode 100644 index 0000000..4dc93ff --- /dev/null +++ b/06_Day/06_day_loops.md @@ -0,0 +1,338 @@ +## Table of Contents + +[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](#) + +![Day 5](../images/banners/day_1_5.png) + +- [📔 Day 6](#%f0%9f%93%94-day-6) + - [Loops](#loops) + - [for Loop](#for-loop) + - [while loop](#while-loop) + - [do while loop](#do-while-loop) + - [for of loop](#for-of-loop) + - [💻 Exercises:Day 6](#%f0%9f%92%bb-exercisesday-6) + +# 📔 Day 6 + +## Loops + +Most of the activities we do in life are full of repetitions. Imagine if I ask you to print out from 0 to 100 using console.log(). To implement this simple task it may take you 2 to 5 minutes, such kind of tedious and repetitive task can be carried out using loop. + +In programming languages to carry out repetitive task we use different kinds of loop. The following examples are the commonly used loops. + +### for Loop + +```js +//For loop structure +for(initialization, condition, increment/decrement){ + // code goes here +} +for(let i = 0; i <= 5; i++){ + console.log(i) +} +// 0 1 2 3 4 5 + +for(let i = 5; i >= 0; i--){ + console.log(i) +} +// 5 4 3 2 1 0 + +for(let i = 0; i <= 5; i++){ + console.log(`${i} * ${i} = ${i * i}`) +} +// 0 1 4 9 16 25 + +``` + +Adding all elements in the array + +```js +const numbers = [1, 2, 3, 4, 5] +let sum = 0 +for(let i = 0; i < numbers.length; i++){ + sum = sum + numbers[i] // can be shorten, sum += numbers[i] + +} + +console.log(sum) // 15 +``` + +Creating a new are based on the existing array + +```js +const numbers = [1, 2, 3, 4, 5] +const newArr = [] +let sum = 0 +for(let i = 0; i < numbers.length; i++){ + newArr.push(i * i) + +} + +console.log(newArr) // [1, 4, 9, 16, 25] +``` + +### while loop + +```js +let i = 0 +while (i <= 5) { + console.log(i) + i++ +} +``` + +### do while loop + +```js +let i = 0 +do { + console.log(i) + i++ +} while (i <= 5) +``` + +### for of loop + +We use for of loop for arrays. It is very hand way to iterate through an array if we are not interested in the index. + +```js +for (const element of arr) { + // code goes here +} +``` + +```js + +const numbers = [1, 2, 3, 4, 5] + +for (const num of numbers) { + console.log(num) //1 2 3 4 5 +} + +for (const num of numbers) { + console.log(num * num) //1 4 9 16 25 +} + +// adding all the numbers in the array +let sum = 0 +for (const num of numbers) { + sum += sum + num // can be also shorten like this, sum += num +} +console.log(sum) // 15 + + + +const webTechs = [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Redux', + 'Node', + 'MongoDB' +] + +for (const tech of webTechs) { + console.log(tech.toUpperCase()) // HTML CSS JAVASCRIPT REACT NODE MONGODB +} + +for (const tech of webTechs) { + console.log(tech[0]) //get only the first letter of each element, H C J R N M +} + +``` + +🌕 You are so brave, you made to this far. You have just completed day 6 challenges and you are 6 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. + +## 💻 Exercises:Day 6 + +```js +const countries = [ + 'Albania', + 'Bolivia', + 'Canada', + 'Denmark', + 'Ethiopia', + 'Finland', + 'Germany', + 'Hungary', + 'Ireland', + 'Japan', + 'Kenya' +] + +const webTechs = [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Redux', + 'Node', + 'MongoDB' +] + +const mernStack = ['MongoDB', 'Express', 'React', 'Node'] +``` + +1. Iterate 0 to 10 using for loop, do the same using while and do while loop +2. Iterate 10 to 0 using for loop, do the same using while and do while loop +3. Iterate 0 to n using for loop +4. Write a loop that makes the following pattern using console.log(): + + ```js + # + ## + ### + #### + ##### + ###### + ####### + ``` + +5. Use loop to print the following pattern: + + ```sh + 0 x 0 = 0 + 1 x 1 = 1 + 2 x 2 = 4 + 3 x 3 = 9 + 4 x 4 = 16 + 5 x 5 = 25 + 6 x 6 = 36 + 7 x 7 = 49 + 8 x 8 = 64 + 9 x 9 = 81 + 10 x 10 = 100 + ``` + +6. Using loop print the following pattern + + ```sh + i i^2 i^3 + 0 0 0 + 1 1 1 + 2 4 8 + 3 9 27 + 4 16 64 + 5 25 125 + 6 36 216 + 7 49 343 + 8 64 512 + 9 81 729 + 10 100 1000 + ``` + +7. Use for loop to iterate from 0 to 100 and print only even numbers +8. Use for loop to iterate from 0 to 100 and print only odd numbers +9. Use for loop to iterate from 0 to 100 and print only prime numbers +10. Use for loop to iterate from 0 to 100 and print and print the sum of all numbers. + + ```sh + The sum all numbers is 5050. + ``` + +11. Use for loop to iterate from 0 to 100 and print the sum of all evens and the sum of all odds. + + ```sh + The sum of all evens is 2550. And the sum of all odds is 2500. + ``` + +12. Use for loop to iterate from 0 to 100 and print the sum of all evens and the sum of all odds. Print sum of evens and sum of odds as array + + ```sh + [2550, 2500] + ``` + +13. Develop a small script which generate array of 5 random numbers +14. Develop a small script which generate array of 5 random numbers and the numbers must be unique +15. Develop a small script which generate a six characters random id: + + ```sh + 5j2khz + ``` + +16. Develop a small script which generate a any number of characters random id: + + ```sh + fe3jo1gl124g + ``` + + ```sh + xkqci4utda1lmbelpkm03rba + ``` + +17. Using the above countries array, create the following new array. + + ```sh + ["ALBANIA", "BOLIVIA", "CANADA", "DENMARK", "ETHIOPIA", "FINLAND", "GERMANY", "HUNGARY", "IRELAND", "JAPAN", "KENYA"] + ``` + +18. Use the countries array to create the following array of arrays: + + ```sh + [ + ['Albania', 'ALB', 7], + ['Bolivia', 'BOL', 7], + ['Canada', 'CAN', 6], + ['Denmark', 'DEN', 7], + ['Ethiopia', 'ETH', 8], + ['Finland', 'FIN', 7], + ['Germany', 'GER', 7], + ['Hungary', 'HUN', 7], + ['Ireland', 'IRE', 7], + ['Japan', 'JAP', 5], + ['Kenya', 'KEN', 5] + ] + ``` + +19. In above countries array, check if there is a country or countries containing the word 'land'. If there are countries containing 'land', print it as array. If there is no country containing the word 'land', print 'These are countries without land'. + + ```sh + ['Finland', 'Iceland'] + ``` + +20. In above countries array, check if there a country or countries end with a substring 'ia'. If there are countries end with, print it as array. If there is no country containing the word 'land', print 'These are countries ends without ia'. + + ```sh + ['Albania', 'Bolivia','Ethiopia'] + ``` + +21. Using the above countries array, create an array for countries length'. + + ```sh + [7, 7, 6, 7, 8, 7, 7, 7, 7, 5, 5] + ``` + +22. Using the above countries array, find the country containing the biggest number of characters. + + ```sh + Ethiopia + ``` + +23. Using the above countries array, find the country containing only 5 characters. + + ```sh + ['Japan', 'Kenya'] + ``` + +24. Find the longest word in the webTechs array +25. Use the webTechs are to create the following array of arrays: + + ```sh + [["HTML", 4], ["CSS", 3],["JavaScript", 10],["React", 5],["Redux", 5],["Node", 4],["MongoDB", 7]] + ``` + +26. An application created using MongoDB, Express, React and Node is called a MERN stack. Create the acronym MERN by using the array mernStack + +27. Iterate through the array, ["HTML", "CSS", "JS", "React", "Redux", "Node", "Express", "MongoDB"] using a for loop or for of loop and print out the items. +28. This is a fruit array , ['banana', 'orange', 'mango', 'lemon'] reverse the order using loop without using a reverse method. + +29. Extract all the countries contain the word 'land' from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +30. Find the country containing the hightest number of characters in the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) +31. Extract all the countries contain the word 'land' from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +32. Extract all the countries containing only four characters from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +33. Extract all the countries containing two or more words from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array + +🎉 CONGRATULATIONS ! 🎉 + +[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](#) diff --git a/06_Day/06_day_starter/data/countries.js b/06_Day/06_day_starter/data/countries.js new file mode 100644 index 0000000..e57b005 --- /dev/null +++ b/06_Day/06_day_starter/data/countries.js @@ -0,0 +1,195 @@ +const countries = [ + 'Afghanistan', + 'Albania', + 'Algeria', + 'Andorra', + 'Angola', + 'Antigua and Barbuda', + 'Argentina', + 'Armenia', + 'Australia', + 'Austria', + 'Azerbaijan', + 'Bahamas', + 'Bahrain', + 'Bangladesh', + 'Barbados', + 'Belarus', + 'Belgium', + 'Belize', + 'Benin', + 'Bhutan', + 'Bolivia', + 'Bosnia and Herzegovina', + 'Botswana', + 'Brazil', + 'Brunei', + 'Bulgaria', + 'Burkina Faso', + 'Burundi', + 'Cambodia', + 'Cameroon', + 'Canada', + 'Cape Verde', + 'Central African Republic', + 'Chad', + 'Chile', + 'China', + 'Colombi', + 'Comoros', + 'Congo (Brazzaville)', + 'Congo', + 'Costa Rica', + "Cote d'Ivoire", + 'Croatia', + 'Cuba', + 'Cyprus', + 'Czech Republic', + 'Denmark', + 'Djibouti', + 'Dominica', + 'Dominican Republic', + 'East Timor (Timor Timur)', + 'Ecuador', + 'Egypt', + 'El Salvador', + 'Equatorial Guinea', + 'Eritrea', + 'Estonia', + 'Ethiopia', + 'Fiji', + 'Finland', + 'France', + 'Gabon', + 'Gambia, The', + 'Georgia', + 'Germany', + 'Ghana', + 'Greece', + 'Grenada', + 'Guatemala', + 'Guinea', + 'Guinea-Bissau', + 'Guyana', + 'Haiti', + 'Honduras', + 'Hungary', + 'Iceland', + 'India', + 'Indonesia', + 'Iran', + 'Iraq', + 'Ireland', + 'Israel', + 'Italy', + 'Jamaica', + 'Japan', + 'Jordan', + 'Kazakhstan', + 'Kenya', + 'Kiribati', + 'Korea, North', + 'Korea, South', + 'Kuwait', + 'Kyrgyzstan', + 'Laos', + 'Latvia', + 'Lebanon', + 'Lesotho', + 'Liberia', + 'Libya', + 'Liechtenstein', + 'Lithuania', + 'Luxembourg', + 'Macedonia', + 'Madagascar', + 'Malawi', + 'Malaysia', + 'Maldives', + 'Mali', + 'Malta', + 'Marshall Islands', + 'Mauritania', + 'Mauritius', + 'Mexico', + 'Micronesia', + 'Moldova', + 'Monaco', + 'Mongolia', + 'Morocco', + 'Mozambique', + 'Myanmar', + 'Namibia', + 'Nauru', + 'Nepal', + 'Netherlands', + 'New Zealand', + 'Nicaragua', + 'Niger', + 'Nigeria', + 'Norway', + 'Oman', + 'Pakistan', + 'Palau', + 'Panama', + 'Papua New Guinea', + 'Paraguay', + 'Peru', + 'Philippines', + 'Poland', + 'Portugal', + 'Qatar', + 'Romania', + 'Russia', + 'Rwanda', + 'Saint Kitts and Nevis', + 'Saint Lucia', + 'Saint Vincent', + 'Samoa', + 'San Marino', + 'Sao Tome and Principe', + 'Saudi Arabia', + 'Senegal', + 'Serbia and Montenegro', + 'Seychelles', + 'Sierra Leone', + 'Singapore', + 'Slovakia', + 'Slovenia', + 'Solomon Islands', + 'Somalia', + 'South Africa', + 'Spain', + 'Sri Lanka', + 'Sudan', + 'Suriname', + 'Swaziland', + 'Sweden', + 'Switzerland', + 'Syria', + 'Taiwan', + 'Tajikistan', + 'Tanzania', + 'Thailand', + 'Togo', + 'Tonga', + 'Trinidad and Tobago', + 'Tunisia', + 'Turkey', + 'Turkmenistan', + 'Tuvalu', + 'Uganda', + 'Ukraine', + 'United Arab Emirates', + 'United Kingdom', + 'United States', + 'Uruguay', + 'Uzbekistan', + 'Vanuatu', + 'Vatican City', + 'Venezuela', + 'Vietnam', + 'Yemen', + 'Zambia', + 'Zimbabwe' +] diff --git a/06_Day/06_day_starter/index.html b/06_Day/06_day_starter/index.html new file mode 100644 index 0000000..28d2d78 --- /dev/null +++ b/06_Day/06_day_starter/index.html @@ -0,0 +1,17 @@ + + + + + 30DaysOfJavaScript:06 Day + + + +

30DaysOfJavaScript:06 Day

+

Loops

+ + + + + + + \ No newline at end of file diff --git a/06_Day/06_day_starter/scripts/main.js b/06_Day/06_day_starter/scripts/main.js new file mode 100644 index 0000000..c6045c8 --- /dev/null +++ b/06_Day/06_day_starter/scripts/main.js @@ -0,0 +1,2 @@ +console.log(countries) +alert('Open the console and check if the countries has been loaded') \ No newline at end of file From 3636679daa2a8c600f1d669690c141e5c47ca75a Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Mon, 6 Jan 2020 22:59:13 +0200 Subject: [PATCH 14/54] day 6 --- 05_Day/05_day_arrays.md | 4 ++-- 06_Day/06_day_loops.md | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index a060e01..f35c0ba 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -1,6 +1,6 @@ ## Table of Contents -[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](#) +[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) -- ![Day 5](../images/banners/day_1_5.png) @@ -745,4 +745,4 @@ const webTechs = [ 🎉 CONGRATULATIONS ! 🎉 -[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](#) +[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index 4dc93ff..aa2433e 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -1,6 +1,7 @@ ## Table of Contents [<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](#) +-- ![Day 5](../images/banners/day_1_5.png) From 3827787a1f3ba1447bcba8a815388e52f5ab4e55 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Mon, 6 Jan 2020 23:05:55 +0200 Subject: [PATCH 15/54] day 6 --- 06_Day/06_day_loops.md | 2 +- images/banners/{Day -1 – 10.png => day_1_10.png} | Bin images/banners/{Day -1 – 11.png => day_1_11.png} | Bin images/banners/{Day -1 – 12.png => day_1_12.png} | Bin images/banners/{Day -1 – 13.png => day_1_13.png} | Bin images/banners/{Day -1 – 14.png => day_1_14.png} | Bin images/banners/{Day -1 – 15.png => day_1_15.png} | Bin images/banners/{Day -1 – 7.png => day_1_7.png} | Bin images/banners/{Day -1 – 8.png => day_1_8.png} | Bin images/banners/{Day -1 – 9.png => day_1_9.png} | Bin 10 files changed, 1 insertion(+), 1 deletion(-) rename images/banners/{Day -1 – 10.png => day_1_10.png} (100%) rename images/banners/{Day -1 – 11.png => day_1_11.png} (100%) rename images/banners/{Day -1 – 12.png => day_1_12.png} (100%) rename images/banners/{Day -1 – 13.png => day_1_13.png} (100%) rename images/banners/{Day -1 – 14.png => day_1_14.png} (100%) rename images/banners/{Day -1 – 15.png => day_1_15.png} (100%) rename images/banners/{Day -1 – 7.png => day_1_7.png} (100%) rename images/banners/{Day -1 – 8.png => day_1_8.png} (100%) rename images/banners/{Day -1 – 9.png => day_1_9.png} (100%) diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index aa2433e..33f6630 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -3,7 +3,7 @@ [<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](#) -- -![Day 5](../images/banners/day_1_5.png) +![Day 5](../images/banners/day_1_6.png) - [📔 Day 6](#%f0%9f%93%94-day-6) - [Loops](#loops) diff --git a/images/banners/Day -1 – 10.png b/images/banners/day_1_10.png similarity index 100% rename from images/banners/Day -1 – 10.png rename to images/banners/day_1_10.png diff --git a/images/banners/Day -1 – 11.png b/images/banners/day_1_11.png similarity index 100% rename from images/banners/Day -1 – 11.png rename to images/banners/day_1_11.png diff --git a/images/banners/Day -1 – 12.png b/images/banners/day_1_12.png similarity index 100% rename from images/banners/Day -1 – 12.png rename to images/banners/day_1_12.png diff --git a/images/banners/Day -1 – 13.png b/images/banners/day_1_13.png similarity index 100% rename from images/banners/Day -1 – 13.png rename to images/banners/day_1_13.png diff --git a/images/banners/Day -1 – 14.png b/images/banners/day_1_14.png similarity index 100% rename from images/banners/Day -1 – 14.png rename to images/banners/day_1_14.png diff --git a/images/banners/Day -1 – 15.png b/images/banners/day_1_15.png similarity index 100% rename from images/banners/Day -1 – 15.png rename to images/banners/day_1_15.png diff --git a/images/banners/Day -1 – 7.png b/images/banners/day_1_7.png similarity index 100% rename from images/banners/Day -1 – 7.png rename to images/banners/day_1_7.png diff --git a/images/banners/Day -1 – 8.png b/images/banners/day_1_8.png similarity index 100% rename from images/banners/Day -1 – 8.png rename to images/banners/day_1_8.png diff --git a/images/banners/Day -1 – 9.png b/images/banners/day_1_9.png similarity index 100% rename from images/banners/Day -1 – 9.png rename to images/banners/day_1_9.png From 7e0772ec71822df174109c636248d88443de48dc Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Mon, 6 Jan 2020 23:23:16 +0200 Subject: [PATCH 16/54] day 6 --- 06_Day/06_day_loops.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index 33f6630..93632fa 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -11,6 +11,8 @@ - [while loop](#while-loop) - [do while loop](#do-while-loop) - [for of loop](#for-of-loop) + - [break](#break) + - [continue](#continue) - [💻 Exercises:Day 6](#%f0%9f%92%bb-exercisesday-6) # 📔 Day 6 @@ -143,7 +145,15 @@ for (const tech of webTechs) { ``` -🌕 You are so brave, you made to this far. You have just completed day 6 challenges and you are 6 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. +### break + +content will be added soon + +### continue + +content will added soon + +🌕 You are so brave, you made it to this far. Now, you have gained the power to automate repetitive and tedious tasks. You have just completed day 6 challenges and you are 6 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. ## 💻 Exercises:Day 6 From 371ab164bc105657330a16fccab3348774b120b4 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Mon, 6 Jan 2020 23:30:38 +0200 Subject: [PATCH 17/54] day 6 --- 06_Day/06_day_loops.md | 1 + 1 file changed, 1 insertion(+) diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index 93632fa..a761360 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -343,6 +343,7 @@ const mernStack = ['MongoDB', 'Express', 'React', 'Node'] 31. Extract all the countries contain the word 'land' from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array 32. Extract all the countries containing only four characters from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array 33. Extract all the countries containing two or more words from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +34. Reverse the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and capitalize each country and stored it as an array 🎉 CONGRATULATIONS ! 🎉 From e14b51c09e30a5f84ebf2c9a16c7d9ce00a64e4f Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Mon, 6 Jan 2020 23:36:13 +0200 Subject: [PATCH 18/54] day 6 --- 06_Day/06_day_loops.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index a761360..3dff718 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -60,7 +60,7 @@ for(let i = 0; i < numbers.length; i++){ console.log(sum) // 15 ``` -Creating a new are based on the existing array +Creating a new array based on the existing array ```js const numbers = [1, 2, 3, 4, 5] @@ -74,6 +74,16 @@ for(let i = 0; i < numbers.length; i++){ console.log(newArr) // [1, 4, 9, 16, 25] ``` +```js +const countries = ['Finland', 'Sweden', 'Norway', 'Denmark', 'Iceland'] +const newArr = [] +for(let i = 0; i < countries.length; i++){ + newArr.push(countries[i].toUpperCase()) +} + +console.log(newArr) // ["FINLAND", "SWEDEN", "NORWAY", "DENMARK", "ICELAND"] +``` + ### while loop ```js @@ -145,6 +155,16 @@ for (const tech of webTechs) { ``` +```js +const countries = ['Finland', 'Sweden', 'Norway', 'Denmark', 'Iceland'] +const newArr = [] +for(const country of countries){ + newArr.push(country.toUpperCase()) +} + +console.log(newArr) // ["FINLAND", "SWEDEN", "NORWAY", "DENMARK", "ICELAND"] +``` + ### break content will be added soon From 3eb887f765d3a63d9ec0a078877e02adad0a50f4 Mon Sep 17 00:00:00 2001 From: nyan-lin-tun Date: Tue, 7 Jan 2020 19:40:12 +0630 Subject: [PATCH 19/54] Change the wrong language name in day 2 markdown --- 02_Day/02_day_data_types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index bc8c7c1..7e253e3 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -762,7 +762,7 @@ console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove **Example:** ```js -// Different python data types +// Different javascript data types // Let's declare different data types let firstName = 'Asabeneh' // string From 3d62a9eea152a9c85d836c60548f735bc69d62d1 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Tue, 7 Jan 2020 17:45:11 +0200 Subject: [PATCH 20/54] day 5 cleaned --- 06_Day/06_day_loops.md | 86 ++++++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 28 deletions(-) diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index 3dff718..f0dee49 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -282,23 +282,41 @@ const mernStack = ['MongoDB', 'Express', 'React', 'Node'] 5j2khz ``` -16. Develop a small script which generate a any number of characters random id: +16. Develop a small script which generate any number of characters random id: ```sh - fe3jo1gl124g + fe3jo1gl124g ``` ```sh - xkqci4utda1lmbelpkm03rba + xkqci4utda1lmbelpkm03rba ``` -17. Using the above countries array, create the following new array. +17. Write a script which generates a random hexadecimal number. + + ```sh + '#ee33df' + ``` + +18. Write a script which generates a random rgb color number. + + ```sh + rgb(240,180,80) + ``` + +19. Using the above countries array, create the following new array. ```sh ["ALBANIA", "BOLIVIA", "CANADA", "DENMARK", "ETHIOPIA", "FINLAND", "GERMANY", "HUNGARY", "IRELAND", "JAPAN", "KENYA"] ``` -18. Use the countries array to create the following array of arrays: +20. Using the above countries array, create an array for countries length'. + + ```sh + [7, 7, 6, 7, 8, 7, 7, 7, 7, 5, 5] + ``` + +21. Use the countries array to create the following array of arrays: ```sh [ @@ -316,54 +334,66 @@ const mernStack = ['MongoDB', 'Express', 'React', 'Node'] ] ``` -19. In above countries array, check if there is a country or countries containing the word 'land'. If there are countries containing 'land', print it as array. If there is no country containing the word 'land', print 'These are countries without land'. +22. In above countries array, check if there is a country or countries containing the word 'land'. If there are countries containing 'land', print it as array. If there is no country containing the word 'land', print 'These are countries without land'. ```sh ['Finland', 'Iceland'] ``` -20. In above countries array, check if there a country or countries end with a substring 'ia'. If there are countries end with, print it as array. If there is no country containing the word 'land', print 'These are countries ends without ia'. +23. In above countries array, check if there a country or countries end with a substring 'ia'. If there are countries end with, print it as array. If there is no country containing the word 'land', print 'These are countries ends without ia'. ```sh ['Albania', 'Bolivia','Ethiopia'] ``` -21. Using the above countries array, create an array for countries length'. - - ```sh - [7, 7, 6, 7, 8, 7, 7, 7, 7, 5, 5] - ``` - -22. Using the above countries array, find the country containing the biggest number of characters. +24. Using the above countries array, find the country containing the biggest number of characters. ```sh Ethiopia ``` -23. Using the above countries array, find the country containing only 5 characters. +25. Using the above countries array, find the country containing only 5 characters. ```sh ['Japan', 'Kenya'] ``` -24. Find the longest word in the webTechs array -25. Use the webTechs are to create the following array of arrays: +26. Find the longest word in the webTechs array +27. Use the webTechs are to create the following array of arrays: ```sh [["HTML", 4], ["CSS", 3],["JavaScript", 10],["React", 5],["Redux", 5],["Node", 4],["MongoDB", 7]] ``` -26. An application created using MongoDB, Express, React and Node is called a MERN stack. Create the acronym MERN by using the array mernStack - -27. Iterate through the array, ["HTML", "CSS", "JS", "React", "Redux", "Node", "Express", "MongoDB"] using a for loop or for of loop and print out the items. -28. This is a fruit array , ['banana', 'orange', 'mango', 'lemon'] reverse the order using loop without using a reverse method. - -29. Extract all the countries contain the word 'land' from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array -30. Find the country containing the hightest number of characters in the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) -31. Extract all the countries contain the word 'land' from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array -32. Extract all the countries containing only four characters from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array -33. Extract all the countries containing two or more words from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array -34. Reverse the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and capitalize each country and stored it as an array +28. An application created using MongoDB, Express, React and Node is called a MERN stack. Create the acronym MERN by using the array mernStack + +29. Iterate through the array, ["HTML", "CSS", "JS", "React", "Redux", "Node", "Express", "MongoDB"] using a for loop or for of loop and print out the items. +30. This is a fruit array , ['banana', 'orange', 'mango', 'lemon'] reverse the order using loop without using a reverse method. +31. Print all the elements of array as shown below. + + ```js + const fullStack = [ + ['HTML', 'CSS', 'JS', 'React'], + ['Node', 'Express', 'MongoDB'] + ] +```` + + ```sh + HTML + CSS + JS + REACT + NODE + EXPRESS + MONGODB + ``` + +32. Extract all the countries contain the word 'land' from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +33. Find the country containing the hightest number of characters in the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) +35. Extract all the countries contain the word 'land' from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +36. Extract all the countries containing only four characters from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +37. Extract all the countries containing two or more words from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +38. Reverse the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and capitalize each country and stored it as an array 🎉 CONGRATULATIONS ! 🎉 From ea19bb164a5d08466be04350e836e5d276825866 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Wed, 8 Jan 2020 01:57:14 +0200 Subject: [PATCH 21/54] day 7 --- .gitignore | 1 - 02_Day/02_day_data_types.md | 2 +- 06_Day/06_day_loops.md | 143 +++--- 07_Day/06_day_starter/data/countries.js | 195 ++++++++ 07_Day/06_day_starter/index.html | 17 + 07_Day/06_day_starter/scripts/main.js | 2 + 07_Day/07_day_functions.md | 602 ++++++++++++++++++++++++ 7 files changed, 902 insertions(+), 60 deletions(-) create mode 100644 07_Day/06_day_starter/data/countries.js create mode 100644 07_Day/06_day_starter/index.html create mode 100644 07_Day/06_day_starter/scripts/main.js create mode 100644 07_Day/07_day_functions.md diff --git a/.gitignore b/.gitignore index 698c285..62f509c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,6 @@ day9.md day10.md 01_02_03_days_backup.md test.md -07_Day 08_Day 09_Day 10_Day diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index cc7bea9..dc88f61 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -311,7 +311,7 @@ Asabeneh Yetayeh. I am 250. I live in Finland #### Long Literal Strings -A string could be a single character or paragraph or a page. If the string length is too big it does not fit in one line. We can use the backslash character (\) at the end of each line to indicate that the string will continue on the next line. +A string could be a single character or paragraph or a page. If the string length is too big it does not fit in one line. We can use the backslash character (\\) at the end of each line to indicate that the string will continue on the next line. **Example:** ```js diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index f0dee49..3a8c7e2 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -1,6 +1,6 @@ ## Table of Contents -[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](#) +[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_functions.md) -- ![Day 5](../images/banners/day_1_6.png) @@ -30,21 +30,44 @@ In programming languages to carry out repetitive task we use different kinds of for(initialization, condition, increment/decrement){ // code goes here } +``` + +```js for(let i = 0; i <= 5; i++){ console.log(i) } // 0 1 2 3 4 5 +``` +```js for(let i = 5; i >= 0; i--){ console.log(i) } // 5 4 3 2 1 0 +``` +```js for(let i = 0; i <= 5; i++){ console.log(`${i} * ${i} = ${i * i}`) } -// 0 1 4 9 16 25 +``` +```sh +0 * 0 = 0 +1 * 1 = 1 +2 * 2 = 4 +3 * 3 = 9 +4 * 4 = 16 +5 * 5 = 25 +``` + +```js +const countries = ['Finland', 'Sweden', 'Denmark', 'Norway', 'Iceland'] +const newArr = [] +for(let i = 0; i < countries.length; i++){ + newArr.push(countries[i].toUpperCase()) +} +//["FINLAND", "SWEDEN", "DENMARK", "NORWAY", "ICELAND"] ``` Adding all elements in the array @@ -92,6 +115,7 @@ while (i <= 5) { console.log(i) i++ } +// 0 1 2 3 4 5 ``` ### do while loop @@ -102,6 +126,7 @@ do { console.log(i) i++ } while (i <= 5) +// 0 1 2 3 4 5 ``` ### for of loop @@ -177,33 +202,33 @@ content will added soon ## 💻 Exercises:Day 6 -```js -const countries = [ - 'Albania', - 'Bolivia', - 'Canada', - 'Denmark', - 'Ethiopia', - 'Finland', - 'Germany', - 'Hungary', - 'Ireland', - 'Japan', - 'Kenya' -] + ```js + const countries = [ + 'Albania', + 'Bolivia', + 'Canada', + 'Denmark', + 'Ethiopia', + 'Finland', + 'Germany', + 'Hungary', + 'Ireland', + 'Japan', + 'Kenya' + ] -const webTechs = [ - 'HTML', - 'CSS', - 'JavaScript', - 'React', - 'Redux', - 'Node', - 'MongoDB' -] + const webTechs = [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Redux', + 'Node', + 'MongoDB' + ] -const mernStack = ['MongoDB', 'Express', 'React', 'Node'] -``` + const mernStack = ['MongoDB', 'Express', 'React', 'Node'] + ``` 1. Iterate 0 to 10 using for loop, do the same using while and do while loop 2. Iterate 10 to 0 using for loop, do the same using while and do while loop @@ -294,15 +319,15 @@ const mernStack = ['MongoDB', 'Express', 'React', 'Node'] 17. Write a script which generates a random hexadecimal number. - ```sh - '#ee33df' - ``` + ```sh + '#ee33df' + ``` 18. Write a script which generates a random rgb color number. - ```sh - rgb(240,180,80) - ``` + ```sh + rgb(240,180,80) + ``` 19. Using the above countries array, create the following new array. @@ -348,9 +373,9 @@ const mernStack = ['MongoDB', 'Express', 'React', 'Node'] 24. Using the above countries array, find the country containing the biggest number of characters. - ```sh - Ethiopia - ``` + ```sh + Ethiopia + ``` 25. Using the above countries array, find the country containing only 5 characters. @@ -371,30 +396,32 @@ const mernStack = ['MongoDB', 'Express', 'React', 'Node'] 30. This is a fruit array , ['banana', 'orange', 'mango', 'lemon'] reverse the order using loop without using a reverse method. 31. Print all the elements of array as shown below. - ```js - const fullStack = [ - ['HTML', 'CSS', 'JS', 'React'], - ['Node', 'Express', 'MongoDB'] - ] -```` - - ```sh - HTML - CSS - JS - REACT - NODE - EXPRESS - MONGODB - ``` + ```js + const fullStack = [ + ['HTML', 'CSS', 'JS', 'React'], + ['Node', 'Express', 'MongoDB'] + ] + ```` -32. Extract all the countries contain the word 'land' from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array -33. Find the country containing the hightest number of characters in the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) + ```sh + HTML + CSS + JS + REACT + NODE + EXPRESS + MONGODB + ``` +32. Copy countries array(Avoid mutation) +33. Arrays are mutable. Create a copy of array which does not modify the original. Sort the copied array and store in a variable sortedCountries +34. Sort the webTechs array and mernStack array 35. Extract all the countries contain the word 'land' from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array -36. Extract all the countries containing only four characters from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array -37. Extract all the countries containing two or more words from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array -38. Reverse the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and capitalize each country and stored it as an array +36. Find the country containing the hightest number of characters in the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) +37. Extract all the countries contain the word 'land' from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +38. Extract all the countries containing only four characters from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +39. Extract all the countries containing two or more words from the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and print it as array +40. Reverse the [countries array](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js) and capitalize each country and stored it as an array 🎉 CONGRATULATIONS ! 🎉 -[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](#) +[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_functions.md) diff --git a/07_Day/06_day_starter/data/countries.js b/07_Day/06_day_starter/data/countries.js new file mode 100644 index 0000000..e57b005 --- /dev/null +++ b/07_Day/06_day_starter/data/countries.js @@ -0,0 +1,195 @@ +const countries = [ + 'Afghanistan', + 'Albania', + 'Algeria', + 'Andorra', + 'Angola', + 'Antigua and Barbuda', + 'Argentina', + 'Armenia', + 'Australia', + 'Austria', + 'Azerbaijan', + 'Bahamas', + 'Bahrain', + 'Bangladesh', + 'Barbados', + 'Belarus', + 'Belgium', + 'Belize', + 'Benin', + 'Bhutan', + 'Bolivia', + 'Bosnia and Herzegovina', + 'Botswana', + 'Brazil', + 'Brunei', + 'Bulgaria', + 'Burkina Faso', + 'Burundi', + 'Cambodia', + 'Cameroon', + 'Canada', + 'Cape Verde', + 'Central African Republic', + 'Chad', + 'Chile', + 'China', + 'Colombi', + 'Comoros', + 'Congo (Brazzaville)', + 'Congo', + 'Costa Rica', + "Cote d'Ivoire", + 'Croatia', + 'Cuba', + 'Cyprus', + 'Czech Republic', + 'Denmark', + 'Djibouti', + 'Dominica', + 'Dominican Republic', + 'East Timor (Timor Timur)', + 'Ecuador', + 'Egypt', + 'El Salvador', + 'Equatorial Guinea', + 'Eritrea', + 'Estonia', + 'Ethiopia', + 'Fiji', + 'Finland', + 'France', + 'Gabon', + 'Gambia, The', + 'Georgia', + 'Germany', + 'Ghana', + 'Greece', + 'Grenada', + 'Guatemala', + 'Guinea', + 'Guinea-Bissau', + 'Guyana', + 'Haiti', + 'Honduras', + 'Hungary', + 'Iceland', + 'India', + 'Indonesia', + 'Iran', + 'Iraq', + 'Ireland', + 'Israel', + 'Italy', + 'Jamaica', + 'Japan', + 'Jordan', + 'Kazakhstan', + 'Kenya', + 'Kiribati', + 'Korea, North', + 'Korea, South', + 'Kuwait', + 'Kyrgyzstan', + 'Laos', + 'Latvia', + 'Lebanon', + 'Lesotho', + 'Liberia', + 'Libya', + 'Liechtenstein', + 'Lithuania', + 'Luxembourg', + 'Macedonia', + 'Madagascar', + 'Malawi', + 'Malaysia', + 'Maldives', + 'Mali', + 'Malta', + 'Marshall Islands', + 'Mauritania', + 'Mauritius', + 'Mexico', + 'Micronesia', + 'Moldova', + 'Monaco', + 'Mongolia', + 'Morocco', + 'Mozambique', + 'Myanmar', + 'Namibia', + 'Nauru', + 'Nepal', + 'Netherlands', + 'New Zealand', + 'Nicaragua', + 'Niger', + 'Nigeria', + 'Norway', + 'Oman', + 'Pakistan', + 'Palau', + 'Panama', + 'Papua New Guinea', + 'Paraguay', + 'Peru', + 'Philippines', + 'Poland', + 'Portugal', + 'Qatar', + 'Romania', + 'Russia', + 'Rwanda', + 'Saint Kitts and Nevis', + 'Saint Lucia', + 'Saint Vincent', + 'Samoa', + 'San Marino', + 'Sao Tome and Principe', + 'Saudi Arabia', + 'Senegal', + 'Serbia and Montenegro', + 'Seychelles', + 'Sierra Leone', + 'Singapore', + 'Slovakia', + 'Slovenia', + 'Solomon Islands', + 'Somalia', + 'South Africa', + 'Spain', + 'Sri Lanka', + 'Sudan', + 'Suriname', + 'Swaziland', + 'Sweden', + 'Switzerland', + 'Syria', + 'Taiwan', + 'Tajikistan', + 'Tanzania', + 'Thailand', + 'Togo', + 'Tonga', + 'Trinidad and Tobago', + 'Tunisia', + 'Turkey', + 'Turkmenistan', + 'Tuvalu', + 'Uganda', + 'Ukraine', + 'United Arab Emirates', + 'United Kingdom', + 'United States', + 'Uruguay', + 'Uzbekistan', + 'Vanuatu', + 'Vatican City', + 'Venezuela', + 'Vietnam', + 'Yemen', + 'Zambia', + 'Zimbabwe' +] diff --git a/07_Day/06_day_starter/index.html b/07_Day/06_day_starter/index.html new file mode 100644 index 0000000..28d2d78 --- /dev/null +++ b/07_Day/06_day_starter/index.html @@ -0,0 +1,17 @@ + + + + + 30DaysOfJavaScript:06 Day + + + +

30DaysOfJavaScript:06 Day

+

Loops

+ + + + + + + \ No newline at end of file diff --git a/07_Day/06_day_starter/scripts/main.js b/07_Day/06_day_starter/scripts/main.js new file mode 100644 index 0000000..c6045c8 --- /dev/null +++ b/07_Day/06_day_starter/scripts/main.js @@ -0,0 +1,2 @@ +console.log(countries) +alert('Open the console and check if the countries has been loaded') \ No newline at end of file diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md new file mode 100644 index 0000000..96f7ae4 --- /dev/null +++ b/07_Day/07_day_functions.md @@ -0,0 +1,602 @@ +## Table of Contents + +## [<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 7 >>](#) + +![Thirty Days Of JavaScript](./day_1_7.png) + +- [📔 Day 7](#%f0%9f%93%94-day-7) + - [Functions](#functions) + - [Function Declaration](#function-declaration) + - [Function without a parameter and return](#function-without-a-parameter-and-return) + - [Function returning value](#function-returning-value) + - [Function with a parameter](#function-with-a-parameter) + - [Function with two parameters](#function-with-two-parameters) + - [Function with many parameters](#function-with-many-parameters) + - [Function with unlimited number of parameters](#function-with-unlimited-number-of-parameters) + - [Anonymous Function](#anonymous-function) + - [Expression Function](#expression-function) + - [Self Invoking Functions](#self-invoking-functions) + - [Arrow Function](#arrow-function) + - [Function with default parameters](#function-with-default-parameters) + - [💻 Exercises](#%f0%9f%92%bb-exercises) + +# 📔 Day 7 + +## Functions + +So far we have seen many builtin JavaScript functions. In this section, we will focus on custom functions. What is a function? Before we start making functions, lets understand what function is and why we need function? + +A function is a reusable block of code or programming statements designed to perform a certain task. +A function is declared by a function key word followed by a name, followed by parentheses (). A parentheses can take a parameter. If a function take a parameter it will be called with argument. A function can also take a default parameter. To store a data to a function, a function has to return certain data types. To get the value we call or invoke a function. +Function makes code: + +- clean and easy to read +- reusable +- easy to test + +A function can be declared or created in couple of ways: + +- _Declaration function_ +- _Expression function_ +- _Anonymous function_ +- _Arrow function_ + +### Function Declaration + +Let us see how to declare a function and how to call a function. + +```js +//declaring a function without a parameter +function functionName() { + // code goes here +} +functionName() // calling function by its name and with parentheses +``` + +#### Function without a parameter and return + +Function can be declared without a parameter. + +**Example:** + +```js +// function without parameter, a function which square a number +function square() { + let num = 2 + let sq = num * num + console.log(sq) +} +square() // 4 + +// function without parameter +function addTwoNumbers() { + let numOne = 10 + let numTwo = 20 + let sum = numOne + numTwo + + console.log(sum) +} +addTwoNumbers() // function has to be called to be executed by it name +``` + +```js + function generateFullName (): + let firstName = 'Asabeneh' + let lastName = 'Yetayeh' + let space = ' ' + let fullName = firstName + space + lastName + console.log(fullName) + generateFullName() // calling a function +``` + +### Function returning value + +Function can also return values, if a function does not return values the value of the function is undefined. Let us write the above functions with return. From now on, we return value to a function instead of printing it. + +```js +function generateFullName (): + let firstName = 'Asabeneh' + let lastName = 'Yetayeh' + let space = ' ' + let fullName = firstName + space + lastName + return fullName +console.log(generateFullName()) + + function addTwoNumbers { + let numOne = 2 + let numTwo = 3 + let total = numOne + numTwo + return total + + } + +console.log(addTwoNumbers()) +``` + +#### Function with a parameter + +In a function we can pass different data types(number, string, boolean, object, function) as a parameter. + +```js +// function with one parameter +function functionName(parm1) { + //code goes her +} +functionName(parm1) // during calling or invoking one argument needed + +function areaOfCircle(r) { + let area = Math.PI * r * r + return area +} + +console.log(areaOfCircle(10)) // should be called with one argument + +function square(number) { + return number * number +} + +console.log(square(10)) +``` + +#### Function with two parameters + +```js +// function with two parameters +function functionName(parm1, parm2) { + //code goes her +} +functionName(parm1, parm2) // during calling or invoking two arguments needed +// Function without parameter doesn't take input, so lets make a parameter with parameter +function sumTwoNumbers(numOne, numTwo) { + let sum = numOne + numTwo + console.log(sum) +} +sumTwoNumbers(10, 20) // calling functions +// If a function doesn't return it doesn't store data, so it should return +function sumTwoNumbersAndReturn(numOne, numTwo) { + let sum = numOne + numTwo + return sum +} + +console.log(sumTwoNumbersAndReturn(10, 20)) +function printFullName(firstName, lastName) { + return `${firstName} ${lastName}` +} +console.log(printFullName('Asabeneh', 'Yetayeh')) +``` + +#### Function with many parameters + +```js +// function with multiple parameters +function functionName(parm1, parm2, parm3,...){ + //code goes here +} +functionName(parm1,parm2,parm3,...) // during calling or invoking three arguments needed + + +// this function takes array as a parameter and sum up the numbers in the array +function sumArrayValues(arr) { + let sum = 0; + for (let i = 0; i < arr.length; i++) { + sum = sum + numbers[i]; + } + return sum; +} +const numbers = [1, 2, 3, 4, 5]; + //calling a function +console.log(sumArrayValues(numbers)); + + + const areaOfCircle = (radius) => { + let area = Math.PI * radius * radius; + return area; + } +console.log(areaOfCircle(10)) + +``` + +#### Function with unlimited number of parameters + +Sometimes we do not know how many arguments the user going to pass. Therefore, we should know how to write a function which can take unlimited number of arguments. A function declaration provides a function scoped arguments array like object. Any thing we passed as argument in the function can be access from arguments. Let us see an example + +```js +// function declaration +​ +function sumAllNums() { + let sum = 0 + for (let i = 0; i < arguments.length; i++) { + sum = sum + arguments[i] + } + return sum +} + +console.log(sumAllNums(1, 2, 3, 4)) // 10 +console.log(sumAllNums(10, 20, 13, 40, 10)) // 93 +console.log(sumAllNums(15, 20, 30, 25, 10, 33, 40)) // 173 +``` + +### Anonymous Function + +Anonymous function or without name + +```js +const anonymousFun = function() { + console.log( + 'I am an anonymous function and my value is stored in anonymousFun' + ) +} +``` + +### Expression Function + +Expression functions are anonymous functions. After we create a function without a name and with assign it to a variable. To return a value from the function we should call the variable. Look at the example below. + +```js +//Declaration function +function square(n) { + return n * n +} + +console.log(square(2)) // -> 4 + +// Function expression +const square = function(n) { + return n * n +} + +console.log(square(2)) // -> 4 +``` + +### Self Invoking Functions + +Self invoking functions are anonymous functions which do not need to be called to return a value. + +```js +;(function(n) { + console.log(n * n) +})(2) // 4, but instead of just printing if we want to return and store the data, we do as shown below + +let squaredNum = (function(n) { + return n * n +})(10) + +console.log(squaredNum) +``` + +### Arrow Function + +Arrow function is an alternative to write a function, however function declaration and arrow function have some minor differences. + +Arrow function uses arrow instead of the keyword function to declare a function. Let us see both function declaration and arrow function. + +```js +// This is how we write normal or declaration function +// Let us change this declaration function to an arrow function +function square(n) { + return n * n +} + +console.log(square(2)) // 4 + +const square = n => { + return n * n +} + +console.log(square(2)) // -> 4 +// if we have only one line, it can be written as follows, explicit return +const square = n => n * n // -> 4 +``` + +```js +const changeToUpperCase = arr => { + const newArr = [] + for (const element of arr) { + newArr.push(element.toUpperCase()) + } + return newArr +} + +const countries = ['Finland', 'Sweden', 'Norway', 'Denmark', 'Iceland'] +console.log(changeToUpperCase(countries)) + +// ["FINLAND", "SWEDEN", "NORWAY", "DENMARK", "ICELAND"] +``` + +```js +const printFullName = (firstName, lastName) => { + return `${firstName} ${lastName}` +} + +console.log(printFullName('Asabeneh', 'Yetayeh')) +``` + +The above function has only the return statement, therefore, we can explicitly return it as follows. + +```js +const printFullName = (firstName, lastName) => { + return `${firstName} ${lastName}` +} + +console.log(printFullName('Asabeneh', 'Yetayeh')) +``` + +### Function with default parameters + +Sometimes we pass default values to parameters, when we invoke the function if we do not pass an argument the default value will be used. Both function declaration and arrow function can have a default value or values. + +```js +// syntax +// Declaring a function +function functionName(param = value) { + //codes +} + +// Calling function +functionName() +functionName(arg) +``` + +**Example:** + +```js +function greetings(name = 'Peter') { + let message = `${name}, welcome to 30 Days Of JavaScript!` + return message +} + +console.log(greetings()) +console.log(greetings('Asabeneh')) +``` + +```js +function generateFullName(firstName = 'Asabeneh', lastName = 'Yetayeh') { + let space = ' ' + let fullName = firstName + space + lastName + return fullName +} + +console.log(generateFullName()) +console.log(generateFullName('David', 'Smith')) +``` + +```js +function calculate_age(birthYear, currentYear = 2019) { + let age = currentYear - birthYear + return age +} + +console.log('Age: ', calculateAge(1819)) +``` + +```js +function weightOfObject(mass, gravity = 9.81) { + let weight = mass * gravity + ' N' // the value has to be changed to string first + return weight +} + +console.log('Weight of an object in Newton: ', weightOfObject(100)) // 9.81 gravity at the surface of Earth +console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gravity at surface of Moon +``` + +Let us see how we write the above functions with arrow functions + +```js +// syntax +// Declaring a function +const functionName = (param = value) => { + //codes +} + +// Calling function +functionName() +functionName(arg) +``` + +**Example:** + +```js +const greetings = (name = 'Peter') => { + let message = name + ', welcome to 30 Days Of JavaScript!' + return message +} + +console.log(greetings()) +console.log(greetings('Asabeneh')) +``` + +```js +const generateFullName = (firstName = 'Asabeneh', lastName = 'Yetayeh') => { + let space = ' ' + let fullName = firstName + space + lastName + return fullName +} + +console.log(generateFullName()) +console.log(generateFullName('David', 'Smith')) +``` + +```js + +const calculateAge = (birthYear, currentYear = 2019) => currentYear - birthYear +console.log('Age: ', calculateAge(1819)) +``` + +```js +const weightOfObject = (mass, gravity = 9.81) => mass * gravity + ' N' + +console.log('Weight of an object in Newton: ', weightOfObject(100)) // 9.81 gravity at the surface of Earth +console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gravity at surface of Moon +``` + +🌕 You are a rising stat, now you knew function . Now, you are super charged with the power of functions. You have just completed day 6 challenges and you are 6 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. + +## 💻 Exercises + +1. Declare a function _fullName_ and it print out your full name. +2. Declare a function _fullName_ and now it takes firstName, lastName as a parameter and it returns your full - name. +3. Declare a function _addNumbers_ and it takes two two parameters and it returns sum. +4. An area of a rectangle is calculated as follows: _area = length x width_. Write a function which calculates _areaOfRectangle_. +5. A perimeter of a rectangle is calculated as follows: _perimeter= 2x(length + width)_. Write a function which calculates _perimeterOfRectangle_. +6. A volume of a rectangular prism is calculated as follows: _volume = length x width x height_. Write a function which calculates _volumeOfRectPrism_. +7. Area of a circle is calculated as follows: _area = π x r x r_. Write a function which calculates _areaOfCircle_ +8. Circumference of a circle is calculated as follows: _circumference = 2πr_. Write a function which calculates _circumOfCircle_ +9. Density of a substance is calculated as follows:_density= mass/volume_. Write a function which calculates _density_. +10. Speed is calculated by dividing the total distance covered by a moving object divided by the total amount of time taken. Write a function which calculates a speed of a moving object, _speed_. +11. Weight of a substance is calculated as follows: _weight = mass x gravity_. Write a function which calculates _weight_. +12. Temperature in oC can be converted to oF using this formula: _oF = (oC x 9/5) + 32_. Write a function which convert oC to oF _convertCelciusToFahrenheit_. +13. Body mass index(BMI) is calculated as follows: _bmi = weight in Kg / (height x height) in m2_. Write a function which calculates _bmi_. BMI is used to broadly define different weight groups in adults 20 years old or older.Check if a person is _underweight, normal, overweight_ or _obese_ based the information given below. + + - The same groups apply to both men and women. + - _Underweight_: BMI is less than 18.5 + - _Normal weight_: BMI is 18.5 to 24.9 + - _Overweight_: BMI is 25 to 29.9 + - _Obese_: BMI is 30 or more + +14. Write a function called _checkSeason_, it takes a month parameter and returns the season:Autumn, Winter, Spring or Summer. +15. Math.max returns its largest argument. Write a function findMax that takes three arguments and returns their maximum with out using Math.max method. + + ```js + console.log(findMax(0, 10, 5)) + 10 + console.log(findMax(0, -10, -2)) + 0 + ``` + +16. Linear equation is calculated as follows: _ax + by + c = 0_. Write a function which calculates value of a linear equation, _solveLinEquation_. +17. Quadratic equation is calculated as follows: _ax2 + bx + c = 0_. Write a function which calculates value or values of a quadratic equation, _solveQuadEquation_. + + ```js + console.log(solveQuadratic()) // {0} + console.log(solveQuadratic(1, 4, 4)) // {-2} + console.log(solveQuadratic(1, -1, -2)) // {2, -1} + console.log(solveQuadratic(1, 7, 12)) // {-3, -4} + console.log(solveQuadratic(1, 0, -4)) //{2, -2} + console.log(solveQuadratic(1, -1, 0)) //{1, 0} + ``` + +18. Declare a function name _printArray_. It takes array as a parameter and it prints out each value of the array. +19. Declare a function name _swapValues_. This function swaps value of x to y. + + ```js + swapValues(3, 4) // x => 4, y=>3 + swapValues(4, 5) // x = 5, y = 4 + ``` + +20. Declare a function name _reverseArray_. It takes array as a parameter and it returns the reverse of the array (don't use method). + + ```js + console.log(reverseArray([1, 2, 3, 4, 5])) + //[5, 4, 3, 2, 1] + console.log(reverseArray(['A', 'B', 'C'])) + //['C', 'B', 'A'] + ``` + +21. Declare a function name _capitalizeArray_. It takes array as a parameter and it returns the - capitalizedarray. +22. Declare a function name _addItem_. It takes an item parameter and it returns an array after adding the item +23. Declare a function name _removeItem_. It takes an index parameter and it returns an array after removing an item +24. Declare a function name _sumOfNumbers_. It takes a number parameter and it adds all the numbers in that range. +25. Declare a function name _sumOfOdds_. It takes a number parameter and it adds all the odd numbers in that - range. +26. Declare a function name _sumOfEven_. It takes a number parameter and it adds all the even numbers in that - range. +27. Declare a function name evensAndOdds . It takes a positive integer as parameter and it counts number of evens and odds in the number. + + ```sh + evensAndOdds(100); + The number of odds are 50. + The number of evens are 51. + ``` + +28. Write a function which takes any number of arguments and return the sum of the arguments + + ```js + sum(1, 2, 3) // -> 6 + sum(1, 2, 3, 4) // -> 10 + ``` + +29. Writ a function which generates a _randomUserIp_. +30. Write a function which generates a _randomMacAddress_ +31. Declare a function name _randomHexaNumberGenerator_. When this function is called it generates a random hexadecimal number. The function return the hexadecimal number. + + ```sh + console.log(randomHexaNumberGenerator()); + '#ee33df' + ``` + +32. Declare a function name _userIdGenerator_. When this function is called it generates seven character id. The function return the id. + + ```sh + console.log(userIdGenerator()); + 41XTDbE + ``` + +33. Modify question number n . Declare a function name _userIdGeneratedByUser_. It doesn’t take any parameter but it takes two inputs using prompt(). One of the input is the number of characters and the second input is the number of ids which are supposed to be generated. + + ```sh + userIdGeneratedByUser() + 'kcsy2 + SMFYb + bWmeq + ZXOYh + 2Rgxf + ' + userIdGeneratedByUser() + '1GCSgPLMaBAVQZ26 + YD7eFwNQKNs7qXaT + ycArC5yrRupyG00S + UbGxOFI7UXSWAyKN + dIV0SSUTgAdKwStr + ' + ``` + +34. Write a function name _rgbColorGenerator_ and it generates rgb colors. + + ```sh + rgbColorGenerator() + rgb(125,244,255) + ``` + +35. Write a function **_arrayOfHexaColors_** which return any number of hexadecimal colors in an array. +36. Write a function **_arrayOfRgbColors_** which return any number of RGB colors in an array. +37. Write a function **_convertHexaToRgb_** which converts hexa color to rgb and it returns an rgb color. +38. Write a function **_convertRgbToHexa_** which converts rgb to hexa color and it returns an hexa color. +39. Write a function **_generateColors_** which can generate any number of hexa or rgb colors. + + ```js + console.log(generateColors('hexa', 3)) // ['#a3e12f', '#03ed55', '#eb3d2b'] + console.log(generateColors('hexa', 1)) // '#b334ef' + console.log(generateColors('rgb', 3)) // ['rgb(5, 55, 175)', 'rgb(50, 105, 100)', 'rgb(15, 26, 80)'] + console.log(generateColors('rgb', 1)) // 'rgb(33,79, 176)' + ``` + +40. Call your function _shuffleArray_, it takes an array as a parameter and it returns a shuffled array +41. Call your function _factorial_, it takes a whole number as a parameter and it return a factorial of the number +42. Call your function _isEmpty_, it takes a parameter and it checks if it is empty or not +43. Call your function _sum_, it takes any number of arguments and it returns the sum. +44. Write a function called _sumOfArrayItems_, it takes an array parameter and return the sum of all the items. Check if all the array items are number types. If not give return reasonable feedback. +45. Write a function called _average_, it takes an array parameter and returns the average of the items. Check if all the array items are number types. If not give return reasonable feedback. +46. Write a function called _modifyArray_ takes array as parameter and modifies the fifth item of the array and return the array. If the array length is less than five it return 'item not found'. + + ```js + console.log(modifyArray(['Avocado', 'Tomato', 'Potato','Mango', 'Lemon','Carrot']); + // →['Avocado', 'Tomato', 'Potato','Mango', 'LEMON', 'Carrot'] + console.log(modifyArray(['Google', 'Facebook','Apple', 'Amazon','Microsoft', 'IBM']); + // →['Google', 'Facebook','Apple', 'Amazon','MICROSOFT', 'IBM'] + console.log(modifyArray(['Google', 'Facebook','Apple', 'Amazon']); + // →'Not Found' + ``` + +47. Write a function called _isPrime_, which checks if a number is prime number. +48. Write a functions which checks if all items are unique in the array. +49. Write a function which checks if all the items of the array are the same data type. +50. JavaScript variable name does not support special characters or symbols except \$ or \_. Write a function **\*isValidVariable** which check if a variable is valid or invalid variable. +51. Write a function which returns array of seven random numbers in a range of 0-9. All the numbers must be unique. + + ```js + sevenRandomNumbers()[(1, 4, 5, 7, 9, 8, 0)] + ``` + +52. Write a function called reverseCountries, it takes countries array and first it copy the array and returns the reverse of the original array + +🎉 CONGRATULATIONS ! 🎉 + +[<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 7 >>](#) From 6d60db7b5813e9072b918fb21ed36cf372c119e3 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Wed, 8 Jan 2020 02:05:57 +0200 Subject: [PATCH 22/54] day 7 --- 06_Day/06_day_loops.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index 3a8c7e2..1814619 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -1,6 +1,6 @@ ## Table of Contents -[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_functions.md) +[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) -- ![Day 5](../images/banners/day_1_6.png) @@ -424,4 +424,4 @@ content will added soon 🎉 CONGRATULATIONS ! 🎉 -[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_functions.md) +[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) From 4b5024c1be780f0e46be5e2a77e2d9d8cf3a4965 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Wed, 8 Jan 2020 02:12:18 +0200 Subject: [PATCH 23/54] day 7 --- .../data/countries.js | 0 .../index.html | 0 .../scripts/main.js | 0 07_Day/07_day_functions.md | 22 +++++++++---------- 4 files changed, 11 insertions(+), 11 deletions(-) rename 07_Day/{06_day_starter => 05_day_starter}/data/countries.js (100%) rename 07_Day/{06_day_starter => 05_day_starter}/index.html (100%) rename 07_Day/{06_day_starter => 05_day_starter}/scripts/main.js (100%) diff --git a/07_Day/06_day_starter/data/countries.js b/07_Day/05_day_starter/data/countries.js similarity index 100% rename from 07_Day/06_day_starter/data/countries.js rename to 07_Day/05_day_starter/data/countries.js diff --git a/07_Day/06_day_starter/index.html b/07_Day/05_day_starter/index.html similarity index 100% rename from 07_Day/06_day_starter/index.html rename to 07_Day/05_day_starter/index.html diff --git a/07_Day/06_day_starter/scripts/main.js b/07_Day/05_day_starter/scripts/main.js similarity index 100% rename from 07_Day/06_day_starter/scripts/main.js rename to 07_Day/05_day_starter/scripts/main.js diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index 96f7ae4..958b4da 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -2,17 +2,17 @@ ## [<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 7 >>](#) -![Thirty Days Of JavaScript](./day_1_7.png) +![Thirty Days Of JavaScript](../images/banners/day_1_7.png) - [📔 Day 7](#%f0%9f%93%94-day-7) - [Functions](#functions) - [Function Declaration](#function-declaration) - - [Function without a parameter and return](#function-without-a-parameter-and-return) + - [Function without a parameter and return](#function-without-a-parameter-and-return) - [Function returning value](#function-returning-value) - - [Function with a parameter](#function-with-a-parameter) - - [Function with two parameters](#function-with-two-parameters) - - [Function with many parameters](#function-with-many-parameters) - - [Function with unlimited number of parameters](#function-with-unlimited-number-of-parameters) + - [Function with a parameter](#function-with-a-parameter) + - [Function with two parameters](#function-with-two-parameters) + - [Function with many parameters](#function-with-many-parameters) + - [Function with unlimited number of parameters](#function-with-unlimited-number-of-parameters) - [Anonymous Function](#anonymous-function) - [Expression Function](#expression-function) - [Self Invoking Functions](#self-invoking-functions) @@ -53,7 +53,7 @@ function functionName() { functionName() // calling function by its name and with parentheses ``` -#### Function without a parameter and return +### Function without a parameter and return Function can be declared without a parameter. @@ -113,7 +113,7 @@ console.log(generateFullName()) console.log(addTwoNumbers()) ``` -#### Function with a parameter +### Function with a parameter In a function we can pass different data types(number, string, boolean, object, function) as a parameter. @@ -138,7 +138,7 @@ function square(number) { console.log(square(10)) ``` -#### Function with two parameters +### Function with two parameters ```js // function with two parameters @@ -165,7 +165,7 @@ function printFullName(firstName, lastName) { console.log(printFullName('Asabeneh', 'Yetayeh')) ``` -#### Function with many parameters +### Function with many parameters ```js // function with multiple parameters @@ -196,7 +196,7 @@ console.log(areaOfCircle(10)) ``` -#### Function with unlimited number of parameters +### Function with unlimited number of parameters Sometimes we do not know how many arguments the user going to pass. Therefore, we should know how to write a function which can take unlimited number of arguments. A function declaration provides a function scoped arguments array like object. Any thing we passed as argument in the function can be access from arguments. Let us see an example From 4acb3acd00943fd617aca3275e5a647b771429ab Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Wed, 8 Jan 2020 02:19:48 +0200 Subject: [PATCH 24/54] day 7 --- 03_Day/03_booleans_operators_date.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 945446d..5b73cc0 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -190,7 +190,7 @@ console.log(0 === false) // false, not exactly the same console.log(1 == true) // true, equivalent console.log(1 === true) // false, not exactly the same console.log(undefined == null) // true -console.log(undefined === null) // true +console.log(undefined === null) // false console.log(NaN == NaN) // false, not equal console.log(NaN === NaN) // false console.log(typeof NaN) // number @@ -207,7 +207,7 @@ console.log('python'.length > 'dragon'.length) // false Try to understand the above comparisons with some logic. Remember without any logic might be difficult. JavaScript is some how a wired kind of programming language. JavaScript code run and give you a result but unless you are good at it may not be the desired result. -As rule of thumb, if a value is not true with == it will not be equall with ===. Using === is safer than using ===. The following [link](https://dorey.github.io/JavaScript-Equality-Table/) has an exhaustive list of comparison of data types. +As rule of thumb, if a value is not true with == it will not be equal with ===. Using === is safer than using ==. The following [link](https://dorey.github.io/JavaScript-Equality-Table/) has an exhaustive list of comparison of data types. ### Logical Operators @@ -307,17 +307,17 @@ No need for a rain coat. let number = 5 number > 0 ? console.log(`${number} is a positive number`) - : console.log(`${number} is a number number`) + : console.log(`${number} is a negative number`) number = -5 number > 0 ? console.log(`${number} is a positive number`) - : console.log(`${number} is a number number`) + : console.log(`${number} is a negative number`) ``` ```sh 5 is a positive number --5 is a number number +-5 is a negative number ``` ### Operator Precendence From 6d6a4ddb51ef6a0fdd71cb84edd0c6b3e2a92d4e Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Wed, 8 Jan 2020 03:22:54 +0200 Subject: [PATCH 25/54] Day Error fixes --- 07_Day/07_day_functions.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index 958b4da..7632f08 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -80,12 +80,13 @@ addTwoNumbers() // function has to be called to be executed by it name ``` ```js - function generateFullName (): + function generateFullName (){ let firstName = 'Asabeneh' let lastName = 'Yetayeh' let space = ' ' let fullName = firstName + space + lastName console.log(fullName) +} generateFullName() // calling a function ``` @@ -94,12 +95,13 @@ addTwoNumbers() // function has to be called to be executed by it name Function can also return values, if a function does not return values the value of the function is undefined. Let us write the above functions with return. From now on, we return value to a function instead of printing it. ```js -function generateFullName (): +function generateFullName (){ let firstName = 'Asabeneh' let lastName = 'Yetayeh' let space = ' ' let fullName = firstName + space + lastName return fullName +} console.log(generateFullName()) function addTwoNumbers { From 0dd4d7e165a2b82c0c7b61800523d73b3eb3dc8e Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Wed, 8 Jan 2020 03:25:22 +0200 Subject: [PATCH 26/54] Day error fixes --- 07_Day/07_day_functions.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index 7632f08..51bd24f 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -103,9 +103,12 @@ function generateFullName (){ return fullName } console.log(generateFullName()) +``` + +```js - function addTwoNumbers { - let numOne = 2 + function addTwoNumbers() { + let numOne = 2 let numTwo = 3 let total = numOne + numTwo return total From b285ca407b5f565b61d6436833015c1db8655c15 Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Wed, 8 Jan 2020 08:26:12 +0300 Subject: [PATCH 27/54] one line printFullName arrow function fix --- 07_Day/07_day_functions.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index 51bd24f..08516a7 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -319,9 +319,7 @@ console.log(printFullName('Asabeneh', 'Yetayeh')) The above function has only the return statement, therefore, we can explicitly return it as follows. ```js -const printFullName = (firstName, lastName) => { - return `${firstName} ${lastName}` -} +const printFullName = (firstName, lastName) => `${firstName} ${lastName}` console.log(printFullName('Asabeneh', 'Yetayeh')) ``` From 7e07d086b2b547fd8a8c9063af0c6dba9f431ea3 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Wed, 8 Jan 2020 17:11:01 +0200 Subject: [PATCH 28/54] restructuring --- 02_Day/02_day_data_types.md | 21 ++++++++++++++++++--- 03_Day/03_booleans_operators_date.md | 20 ++++++++++++++++++-- 04_Day/04_day_conditionals.md | 19 +++++++++++++++++-- 05_Day/05_day_arrays.md | 20 ++++++++++++++++++-- 06_Day/06_day_loops.md | 19 +++++++++++++++++-- 07_Day/07_day_functions.md | 27 ++++++++++++++++++++++----- readMe.md | 20 ++++++++++++++++++-- 7 files changed, 128 insertions(+), 18 deletions(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index dc88f61..12b9af3 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -1,8 +1,23 @@ - -## Table of Contents +
[<< Day 1](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/readMe.md) | [Day 3 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) --- ![Thirty Days Of JavaScript](../images/banners/day_1_2.png) diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 5b73cc0..336b897 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -1,7 +1,23 @@ -## Table of Contents +
+

30 Days Of JavaScript

+ + + GitHub stars + + + + + + Twitter Follow + + + Created by + Asabeneh Yetayeh
+ January, 2020 +
+
[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) | [Day 4 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) --- ![Thirty Days Of JavaScript](../images/banners/day_1_3.png) diff --git a/04_Day/04_day_conditionals.md b/04_Day/04_day_conditionals.md index 1fffa42..668e5f9 100644 --- a/04_Day/04_day_conditionals.md +++ b/04_Day/04_day_conditionals.md @@ -1,7 +1,22 @@ -## Table of Contents +
+

30 Days Of JavaScript

+ + GitHub stars + + + + + + Twitter Follow + + + Created by + Asabeneh Yetayeh
+ January, 2020 +
+
[<< Day 3](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) | [Day 5 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) --- ![Thirty Days Of JavaScript](../images/banners/day_1_4.png) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index f35c0ba..4834b24 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -1,7 +1,23 @@ -## Table of Contents +
+

30 Days Of JavaScript

+ + GitHub stars + + + + + + Twitter Follow + + + Created by + Asabeneh Yetayeh
+ January, 2020 +
+
[<< Day 4](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) | [Day 6 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) --- + ![Day 5](../images/banners/day_1_5.png) - [📔 Day 5](#%f0%9f%93%94-day-5) diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index 1814619..f2f2905 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -1,7 +1,22 @@ -## Table of Contents +
+

30 Days Of JavaScript

+ + GitHub stars + + + + + + Twitter Follow + + + Created by + Asabeneh Yetayeh
+ January, 2020 +
+
[<< Day 5](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) | [Day 7 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) --- ![Day 5](../images/banners/day_1_6.png) diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index 51bd24f..084b2e8 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -1,6 +1,23 @@ -## Table of Contents - -## [<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 7 >>](#) +
+

30 Days Of JavaScript

+ + + GitHub stars + + + + + + Twitter Follow + + + Created by + Asabeneh Yetayeh
+ January, 2020 +
+
+ +[<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 8 >>](#) ![Thirty Days Of JavaScript](../images/banners/day_1_7.png) @@ -366,7 +383,7 @@ console.log(generateFullName('David', 'Smith')) ``` ```js -function calculate_age(birthYear, currentYear = 2019) { +function calculateAge(birthYear, currentYear = 2019) { let age = currentYear - birthYear return age } @@ -604,4 +621,4 @@ console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gra 🎉 CONGRATULATIONS ! 🎉 -[<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 7 >>](#) +[<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 8 >>](#) diff --git a/readMe.md b/readMe.md index b15d8e1..feedf26 100644 --- a/readMe.md +++ b/readMe.md @@ -1,7 +1,23 @@ -## Table of Contents +
+

30 Days Of JavaScript

+ + + GitHub stars + + + + + + Twitter Follow + + + Created by + Asabeneh Yetayeh
+ January, 2020 +
+
[Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) --- ![Thirty Days Of JavaScript](./images/day_1_1.png) From 54718fd74c0f62414b7810aebbf36d6cfc3020fd Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Wed, 8 Jan 2020 17:37:54 +0200 Subject: [PATCH 29/54] cleanig day 7 --- 02_Day/02_day_data_types.md | 5 +-- 03_Day/03_booleans_operators_date.md | 5 +-- 04_Day/04_day_conditionals.md | 4 +- 05_Day/05_day_arrays.md | 4 +- 06_Day/06_day_loops.md | 4 +- 07_Day/07_day_functions.md | 66 +++++++++++++++++++++++++--- readMe.md | 5 +-- 7 files changed, 72 insertions(+), 21 deletions(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 12b9af3..56168ba 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -1,6 +1,5 @@

30 Days Of JavaScript

- GitHub stars @@ -11,8 +10,8 @@ Twitter Follow - Created by - Asabeneh Yetayeh
+ Author: + Asabeneh Yetayeh
January, 2020
diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 336b897..e199822 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -1,6 +1,5 @@

30 Days Of JavaScript

- GitHub stars @@ -11,8 +10,8 @@ Twitter Follow - Created by - Asabeneh Yetayeh
+ Author: + Asabeneh Yetayeh
January, 2020
diff --git a/04_Day/04_day_conditionals.md b/04_Day/04_day_conditionals.md index 668e5f9..2389d27 100644 --- a/04_Day/04_day_conditionals.md +++ b/04_Day/04_day_conditionals.md @@ -10,8 +10,8 @@ Twitter Follow - Created by - Asabeneh Yetayeh
+ Author: + Asabeneh Yetayeh
January, 2020
diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index 4834b24..28b1643 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -10,8 +10,8 @@ Twitter Follow - Created by - Asabeneh Yetayeh
+ Author: + Asabeneh Yetayeh
January, 2020
diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index f2f2905..17f2597 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -10,8 +10,8 @@ Twitter Follow - Created by - Asabeneh Yetayeh
+ Author: + Asabeneh Yetayeh
January, 2020
diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index 084b2e8..97c7b5d 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -1,6 +1,5 @@

30 Days Of JavaScript

- GitHub stars @@ -11,8 +10,8 @@ Twitter Follow - Created by - Asabeneh Yetayeh
+ Author: + Asabeneh Yetayeh
January, 2020
@@ -30,11 +29,14 @@ - [Function with two parameters](#function-with-two-parameters) - [Function with many parameters](#function-with-many-parameters) - [Function with unlimited number of parameters](#function-with-unlimited-number-of-parameters) + - [Unlimited number of parameters in regular function](#unlimited-number-of-parameters-in-regular-function) + - [Unlimited number of parameters in arrow function](#unlimited-number-of-parameters-in-arrow-function) - [Anonymous Function](#anonymous-function) - [Expression Function](#expression-function) - [Self Invoking Functions](#self-invoking-functions) - [Arrow Function](#arrow-function) - [Function with default parameters](#function-with-default-parameters) + - [Function declaration versus Arrow function](#function-declaration-versus-arrow-function) - [💻 Exercises](#%f0%9f%92%bb-exercises) # 📔 Day 7 @@ -220,7 +222,23 @@ console.log(areaOfCircle(10)) ### Function with unlimited number of parameters -Sometimes we do not know how many arguments the user going to pass. Therefore, we should know how to write a function which can take unlimited number of arguments. A function declaration provides a function scoped arguments array like object. Any thing we passed as argument in the function can be access from arguments. Let us see an example +Sometimes we do not know how many arguments the user going to pass. Therefore, we should know how to write a function which can take unlimited number of arguments. The way we do it has a significant difference between a function declaration(regular function) and arrow function.Let us see examples both in function declaration and arrow function. + +#### Unlimited number of parameters in regular function + + A function declaration provides a function scoped arguments array like object. Any thing we passed as argument in the function can be accessed from arguments object inside the functions. Let us see an example + + ```js +// Let us access the arguments object +​ +function sumAllNums() { + console.log(arguments) +} + +sumAllNums(1, 2, 3, 4)) +// Arguments(4) [1, 2, 3, 4, callee: ƒ, Symbol(Symbol.iterator): ƒ] + +``` ```js // function declaration @@ -228,7 +246,41 @@ Sometimes we do not know how many arguments the user going to pass. Therefore, w function sumAllNums() { let sum = 0 for (let i = 0; i < arguments.length; i++) { - sum = sum + arguments[i] + sum += arguments[i] + } + return sum +} + +console.log(sumAllNums(1, 2, 3, 4)) // 10 +console.log(sumAllNums(10, 20, 13, 40, 10)) // 93 +console.log(sumAllNums(15, 20, 30, 25, 10, 33, 40)) // 173 +``` + +#### Unlimited number of parameters in arrow function + + Arrow function does not have the function scoped arguments object. To implement a function which takes unlimited number of arguments in an arrow function we use spread operator followed by any parameter name. Any thing we passed as argument in the function can be accessed as array in the arrow function. Let us see an example + + ```js +// Let us access the arguments object +​ +const sumAllNums = (...args) => { + // console.log(arguments), arguments object not found in arrow function + // instead we use an a parameter followed by spread operator + console.log(args) +} + +sumAllNums(1, 2, 3, 4)) +// [1, 2, 3, 4] + +``` + +```js +// function declaration +​ +const sumAllNums = (...args) => { + let sum = 0 + for (const element of args) { + sum += element } return sum } @@ -275,7 +327,7 @@ console.log(square(2)) // -> 4 Self invoking functions are anonymous functions which do not need to be called to return a value. ```js -;(function(n) { +(function(n) { console.log(n * n) })(2) // 4, but instead of just printing if we want to return and store the data, we do as shown below @@ -451,6 +503,8 @@ console.log('Weight of an object in Newton: ', weightOfObject(100)) // 9.81 grav console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gravity at surface of Moon ``` +### Function declaration versus Arrow function + 🌕 You are a rising stat, now you knew function . Now, you are super charged with the power of functions. You have just completed day 6 challenges and you are 6 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. ## 💻 Exercises diff --git a/readMe.md b/readMe.md index feedf26..ed16b8a 100644 --- a/readMe.md +++ b/readMe.md @@ -1,6 +1,5 @@

30 Days Of JavaScript

- GitHub stars @@ -11,8 +10,8 @@ Twitter Follow - Created by - Asabeneh Yetayeh
+ Author: + Asabeneh Yetayeh
January, 2020
From 4c6089215df148eafb240d1ae457b496edfb9ecb Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Wed, 8 Jan 2020 17:39:58 +0200 Subject: [PATCH 30/54] cleanig day 7 --- 04_Day/04_day_conditionals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/04_Day/04_day_conditionals.md b/04_Day/04_day_conditionals.md index 2389d27..89f56b1 100644 --- a/04_Day/04_day_conditionals.md +++ b/04_Day/04_day_conditionals.md @@ -24,7 +24,7 @@ - [Conditionals](#conditionals) - [if](#if) - [if else](#if-else) - - [if else if else else](#if-else-if-else-else) + - [if else if else](#if-else-if-else) - [Switch](#switch) - [Ternary Operators](#ternary-operators) - [💻 Exercise : Conditionals](#%f0%9f%92%bb-exercise--conditionals) @@ -128,7 +128,7 @@ if (isRaining) { The above condition is false, therefore the else block was executed. How about if our condition is more than two, we will use *else if* conditions. -### if else if else else +### if else if else On our daily life, we make decision on daily basis. We make decision not by checking one or two conditions instead we make decisions based on multiple conditions. As similar to our daily life, programming is also full conditions. We use *else if* when we have multiple conditions. From 51f31ed96a5ceb7d89b514082fed713f1d234c1a Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Wed, 8 Jan 2020 19:12:34 +0200 Subject: [PATCH 31/54] cleanig day 7 --- 02_Day/02_day_data_types.md | 2 +- 03_Day/03_booleans_operators_date.md | 2 +- 04_Day/04_day_conditionals.md | 2 +- 05_Day/05_day_arrays.md | 2 +- 06_Day/06_day_loops.md | 2 +- 07_Day/07_day_functions.md | 2 +- 07_Day/{05_day_starter => 07_day_starter}/data/countries.js | 0 07_Day/{05_day_starter => 07_day_starter}/index.html | 4 ++-- 07_Day/{05_day_starter => 07_day_starter}/scripts/main.js | 0 readMe.md | 2 +- 10 files changed, 9 insertions(+), 9 deletions(-) rename 07_Day/{05_day_starter => 07_day_starter}/data/countries.js (100%) rename 07_Day/{05_day_starter => 07_day_starter}/index.html (65%) rename 07_Day/{05_day_starter => 07_day_starter}/scripts/main.js (100%) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 56168ba..97a118a 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -1,6 +1,6 @@

30 Days Of JavaScript

- + GitHub stars diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index e199822..6b1dc96 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -1,6 +1,6 @@

30 Days Of JavaScript

-
+ GitHub stars diff --git a/04_Day/04_day_conditionals.md b/04_Day/04_day_conditionals.md index 89f56b1..37bfab0 100644 --- a/04_Day/04_day_conditionals.md +++ b/04_Day/04_day_conditionals.md @@ -1,6 +1,6 @@

30 Days Of JavaScript

-
+ GitHub stars diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index 28b1643..164db37 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -1,6 +1,6 @@

30 Days Of JavaScript

-
+ GitHub stars diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index 17f2597..9eab981 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -1,6 +1,6 @@

30 Days Of JavaScript

-
+ GitHub stars diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index 97c7b5d..8762563 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -1,6 +1,6 @@

30 Days Of JavaScript

-
+ GitHub stars diff --git a/07_Day/05_day_starter/data/countries.js b/07_Day/07_day_starter/data/countries.js similarity index 100% rename from 07_Day/05_day_starter/data/countries.js rename to 07_Day/07_day_starter/data/countries.js diff --git a/07_Day/05_day_starter/index.html b/07_Day/07_day_starter/index.html similarity index 65% rename from 07_Day/05_day_starter/index.html rename to 07_Day/07_day_starter/index.html index 28d2d78..c620ee3 100644 --- a/07_Day/05_day_starter/index.html +++ b/07_Day/07_day_starter/index.html @@ -2,11 +2,11 @@ - 30DaysOfJavaScript:06 Day + 30DaysOfJavaScript:07 Day -

30DaysOfJavaScript:06 Day

+

30DaysOfJavaScript:07 Day

Loops

diff --git a/07_Day/05_day_starter/scripts/main.js b/07_Day/07_day_starter/scripts/main.js similarity index 100% rename from 07_Day/05_day_starter/scripts/main.js rename to 07_Day/07_day_starter/scripts/main.js diff --git a/readMe.md b/readMe.md index ed16b8a..f2fa068 100644 --- a/readMe.md +++ b/readMe.md @@ -1,6 +1,6 @@

30 Days Of JavaScript

-
+ GitHub stars From 0b946d0fb832c2dea505ff7027bedcaa73e61dc5 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 00:34:46 +0200 Subject: [PATCH 32/54] day 8 --- .gitignore | 4 +- 05_Day/05_day_arrays.md | 1 + 07_Day/07_day_functions.md | 75 +- 07_Day/07_day_starter/index.html | 2 +- 08_Day/08_day_objects.md | 580 ++++++ 08_Day/08_day_starter/data/countries_obj.js | 2013 +++++++++++++++++++ 08_Day/08_day_starter/index.html | 17 + 08_Day/08_day_starter/scripts/main.js | 2 + 8 files changed, 2657 insertions(+), 37 deletions(-) create mode 100644 08_Day/08_day_objects.md create mode 100644 08_Day/08_day_starter/data/countries_obj.js create mode 100644 08_Day/08_day_starter/index.html create mode 100644 08_Day/08_day_starter/scripts/main.js diff --git a/.gitignore b/.gitignore index 62f509c..5eb48b4 100644 --- a/.gitignore +++ b/.gitignore @@ -14,8 +14,8 @@ day9.md day10.md 01_02_03_days_backup.md test.md -08_Day 09_Day 10_Day 11_Day -12_Day \ No newline at end of file +12_Day +test.html \ No newline at end of file diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index 164db37..c1a795f 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -59,6 +59,7 @@ An array is a collection of different data types which are ordered and changeabl ### How to create an empty array In JavaScript, we can create an array in different ways. Let us different ways to create an array. +It is very common to use *const* instead of *let* to declare an array variable. If you ar using const it means you do not use that name again. - Using Array constructor diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index 8762563..3fa2e12 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -552,14 +552,21 @@ console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gra ``` 18. Declare a function name _printArray_. It takes array as a parameter and it prints out each value of the array. -19. Declare a function name _swapValues_. This function swaps value of x to y. +19. 11. Write a function name _showDateTime_ which shows time in this format: 08/01/2020 04:08 using the Date object. + + ```sh + showDateTime() + 08/01/2020 04:08 + ``` + +20. Declare a function name _swapValues_. This function swaps value of x to y. ```js swapValues(3, 4) // x => 4, y=>3 swapValues(4, 5) // x = 5, y = 4 ``` -20. Declare a function name _reverseArray_. It takes array as a parameter and it returns the reverse of the array (don't use method). +21. Declare a function name _reverseArray_. It takes array as a parameter and it returns the reverse of the array (don't use method). ```js console.log(reverseArray([1, 2, 3, 4, 5])) @@ -568,13 +575,13 @@ console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gra //['C', 'B', 'A'] ``` -21. Declare a function name _capitalizeArray_. It takes array as a parameter and it returns the - capitalizedarray. -22. Declare a function name _addItem_. It takes an item parameter and it returns an array after adding the item -23. Declare a function name _removeItem_. It takes an index parameter and it returns an array after removing an item -24. Declare a function name _sumOfNumbers_. It takes a number parameter and it adds all the numbers in that range. -25. Declare a function name _sumOfOdds_. It takes a number parameter and it adds all the odd numbers in that - range. -26. Declare a function name _sumOfEven_. It takes a number parameter and it adds all the even numbers in that - range. -27. Declare a function name evensAndOdds . It takes a positive integer as parameter and it counts number of evens and odds in the number. +22. Declare a function name _capitalizeArray_. It takes array as a parameter and it returns the - capitalizedarray. +23. Declare a function name _addItem_. It takes an item parameter and it returns an array after adding the item +24. Declare a function name _removeItem_. It takes an index parameter and it returns an array after removing an item +25. Declare a function name _sumOfNumbers_. It takes a number parameter and it adds all the numbers in that range. +26. Declare a function name _sumOfOdds_. It takes a number parameter and it adds all the odd numbers in that - range. +27. Declare a function name _sumOfEven_. It takes a number parameter and it adds all the even numbers in that - range. +28. Declare a function name evensAndOdds . It takes a positive integer as parameter and it counts number of evens and odds in the number. ```sh evensAndOdds(100); @@ -582,30 +589,30 @@ console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gra The number of evens are 51. ``` -28. Write a function which takes any number of arguments and return the sum of the arguments +29. Write a function which takes any number of arguments and return the sum of the arguments ```js sum(1, 2, 3) // -> 6 sum(1, 2, 3, 4) // -> 10 ``` -29. Writ a function which generates a _randomUserIp_. -30. Write a function which generates a _randomMacAddress_ -31. Declare a function name _randomHexaNumberGenerator_. When this function is called it generates a random hexadecimal number. The function return the hexadecimal number. +30. Writ a function which generates a _randomUserIp_. +31. Write a function which generates a _randomMacAddress_ +32. Declare a function name _randomHexaNumberGenerator_. When this function is called it generates a random hexadecimal number. The function return the hexadecimal number. ```sh console.log(randomHexaNumberGenerator()); '#ee33df' ``` -32. Declare a function name _userIdGenerator_. When this function is called it generates seven character id. The function return the id. +33. Declare a function name _userIdGenerator_. When this function is called it generates seven character id. The function return the id. ```sh console.log(userIdGenerator()); 41XTDbE ``` -33. Modify question number n . Declare a function name _userIdGeneratedByUser_. It doesn’t take any parameter but it takes two inputs using prompt(). One of the input is the number of characters and the second input is the number of ids which are supposed to be generated. +34. Modify question number n . Declare a function name _userIdGeneratedByUser_. It doesn’t take any parameter but it takes two inputs using prompt(). One of the input is the number of characters and the second input is the number of ids which are supposed to be generated. ```sh userIdGeneratedByUser() @@ -624,18 +631,18 @@ console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gra ' ``` -34. Write a function name _rgbColorGenerator_ and it generates rgb colors. +35. Write a function name _rgbColorGenerator_ and it generates rgb colors. ```sh rgbColorGenerator() rgb(125,244,255) ``` -35. Write a function **_arrayOfHexaColors_** which return any number of hexadecimal colors in an array. -36. Write a function **_arrayOfRgbColors_** which return any number of RGB colors in an array. -37. Write a function **_convertHexaToRgb_** which converts hexa color to rgb and it returns an rgb color. -38. Write a function **_convertRgbToHexa_** which converts rgb to hexa color and it returns an hexa color. -39. Write a function **_generateColors_** which can generate any number of hexa or rgb colors. +36. Write a function **_arrayOfHexaColors_** which return any number of hexadecimal colors in an array. +37. Write a function **_arrayOfRgbColors_** which return any number of RGB colors in an array. +38. Write a function **_convertHexaToRgb_** which converts hexa color to rgb and it returns an rgb color. +39. Write a function **_convertRgbToHexa_** which converts rgb to hexa color and it returns an hexa color. +40. Write a function **_generateColors_** which can generate any number of hexa or rgb colors. ```js console.log(generateColors('hexa', 3)) // ['#a3e12f', '#03ed55', '#eb3d2b'] @@ -644,13 +651,13 @@ console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gra console.log(generateColors('rgb', 1)) // 'rgb(33,79, 176)' ``` -40. Call your function _shuffleArray_, it takes an array as a parameter and it returns a shuffled array -41. Call your function _factorial_, it takes a whole number as a parameter and it return a factorial of the number -42. Call your function _isEmpty_, it takes a parameter and it checks if it is empty or not -43. Call your function _sum_, it takes any number of arguments and it returns the sum. -44. Write a function called _sumOfArrayItems_, it takes an array parameter and return the sum of all the items. Check if all the array items are number types. If not give return reasonable feedback. -45. Write a function called _average_, it takes an array parameter and returns the average of the items. Check if all the array items are number types. If not give return reasonable feedback. -46. Write a function called _modifyArray_ takes array as parameter and modifies the fifth item of the array and return the array. If the array length is less than five it return 'item not found'. +41. Call your function _shuffleArray_, it takes an array as a parameter and it returns a shuffled array +42. Call your function _factorial_, it takes a whole number as a parameter and it return a factorial of the number +43. Call your function _isEmpty_, it takes a parameter and it checks if it is empty or not +44. Call your function _sum_, it takes any number of arguments and it returns the sum. +45. Write a function called _sumOfArrayItems_, it takes an array parameter and return the sum of all the items. Check if all the array items are number types. If not give return reasonable feedback. +46. Write a function called _average_, it takes an array parameter and returns the average of the items. Check if all the array items are number types. If not give return reasonable feedback. +47. Write a function called _modifyArray_ takes array as parameter and modifies the fifth item of the array and return the array. If the array length is less than five it return 'item not found'. ```js console.log(modifyArray(['Avocado', 'Tomato', 'Potato','Mango', 'Lemon','Carrot']); @@ -661,17 +668,17 @@ console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gra // →'Not Found' ``` -47. Write a function called _isPrime_, which checks if a number is prime number. -48. Write a functions which checks if all items are unique in the array. -49. Write a function which checks if all the items of the array are the same data type. -50. JavaScript variable name does not support special characters or symbols except \$ or \_. Write a function **\*isValidVariable** which check if a variable is valid or invalid variable. -51. Write a function which returns array of seven random numbers in a range of 0-9. All the numbers must be unique. +48. Write a function called _isPrime_, which checks if a number is prime number. +49. Write a functions which checks if all items are unique in the array. +50. Write a function which checks if all the items of the array are the same data type. +51. JavaScript variable name does not support special characters or symbols except \$ or \_. Write a function **\*isValidVariable** which check if a variable is valid or invalid variable. +52. Write a function which returns array of seven random numbers in a range of 0-9. All the numbers must be unique. ```js sevenRandomNumbers()[(1, 4, 5, 7, 9, 8, 0)] ``` -52. Write a function called reverseCountries, it takes countries array and first it copy the array and returns the reverse of the original array +53. Write a function called reverseCountries, it takes countries array and first it copy the array and returns the reverse of the original array 🎉 CONGRATULATIONS ! 🎉 diff --git a/07_Day/07_day_starter/index.html b/07_Day/07_day_starter/index.html index c620ee3..f7eb67c 100644 --- a/07_Day/07_day_starter/index.html +++ b/07_Day/07_day_starter/index.html @@ -7,7 +7,7 @@

30DaysOfJavaScript:07 Day

-

Loops

+

Functions

diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md new file mode 100644 index 0000000..d8a258f --- /dev/null +++ b/08_Day/08_day_objects.md @@ -0,0 +1,580 @@ +
+ +[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/09_Day/09_day_function_programming.md) | [Day 9 >>](#) + +![Thirty Days Of JavaScript](../images/banners/day_1_7.png) + +- [Day 8](#day-8) + - [Scope](#scope) + - [Window Scope](#window-scope) + - [Global scope](#global-scope) + - [Local scope](#local-scope) + - [📔 Object](#%f0%9f%93%94-object) + - [Creating an empty object](#creating-an-empty-object) + - [Creating an objecting with values](#creating-an-objecting-with-values) + - [Getting values from an object](#getting-values-from-an-object) + - [Creating object methods](#creating-object-methods) + - [Setting new key for an object](#setting-new-key-for-an-object) + - [Object Methods](#object-methods) + - [Getting object keys using Object.keys()](#getting-object-keys-using-objectkeys) + - [Getting object values using Object.values()](#getting-object-values-using-objectvalues) + - [Getting object keys and values using Object.entries()](#getting-object-keys-and-values-using-objectentries) + - [Checking properties using hasOwnProperty()](#checking-properties-using-hasownproperty) + - [💻 Exercises](#%f0%9f%92%bb-exercises) + +# Day 8 + +## Scope + +Variable is the fundamental part in programming. We declare variable to store different data types. To declare a variable we use the key word _var_, _let_ and _const_. A variable can declared at different scope. In this section we will see the scope, scope of variables when we use var or let. +Variables scopes can be: + +- Window +- Global +- Local + +Variable can be declared globally or locally or window scope. We will see both global and local scope. +Anything declared without let, var or const is scoped at window level. + +Let us image we have a scope.js file. + +### Window Scope + +Without using console.log() open your browser and check, you will see the value of a and b if you write a or b on the browser. That means a and b are already available in the window. + +```js +//scope.js +a = 'JavaScript' // is a window scope this found anywhere +b = 10 // this is a window scope variable +function letsLearnScope() { + console.log(a, b) + if (true) { + console.log(a, b) + } +} +console.log(a, b) // accessible +``` + +### Global scope + +A globally declared variable can be access every where in the same file. But the term global is relative. It can be global to the file or it can be global relative to some block of codes. + +```js +//scope.js +let a = 'JavaScript' // is a global scope it will be found anywhere in this file +let b = 10 // is a global scope it will be found anywhere in this file +function letsLearnScope() { + console.log(a, b) // JavaScript 10, accessible + if (true) { + let a = 'Python' + let b = 100 + console.log(a, b) // Python 100 + } + console.log(a, b) +} +letsLearnScope() +console.log(a, b) // JavaScript 10, accessible +``` + +### Local scope + +A local declared variable can be access only certain block code. + +```js +//scope.js +let a = 'JavaScript' // is a global scope it will be found anywhere in this file +let b = 10 // is a global scope it will be found anywhere in this file +function letsLearnScope() { + console.log(a, b) // JavaScript 10, accessible + let c = 30 + if (true) { + // we can access from the function and outside the function but + // variables declared inside the if will not be accessed outside the if block + let a = 'Python' + let b = 20 + let d = 40 + console.log(a, b, c) // Python 20 30 + } + // we can not access c because c's scope is only the if block + console.log(a, b) +} +letsLearnScope() +console.log(a, b) // JavaScript 10, accessible +``` + +Now, you have an understanding of scope. A variable declared with *var* only scoped to function but variable declared with *let* or *const* is block scope(function block, if block, loop etc) + +```js +//scope.js +function letsLearnScope() { + var gravity = 9.81 + console.log(gravity) + +} +// console.log(gravity), Uncaught ReferenceError: gravity is not defined + +if (true){ + var gravity = 9.81 + console.log(gravity) // 9.81 +} +console.log(gravity) // 9.81 + +for(var i = 0; i < 3; i++){ + console.log(i) // 1, 2, 3 +} +console.log(i) + +``` + +In ES6 and above there is *let* and *const*, so you will suffer from the sneakiness of *var*. When we use *let* our variable is block scope and it will not infect other parts of our code. + +```js +//scope.js +function letsLearnScope() { + // you can use let or const, but gravity is constant I prefer to use const + const gravity = 9.81 + console.log(gravity) + +} +// console.log(gravity), Uncaught ReferenceError: gravity is not defined + +if (true){ + const gravity = 9.81 + console.log(gravity) // 9.81 +} +// console.log(gravity), Uncaught ReferenceError: gravity is not defined + +for(let i = 0; i < 3; i++){ + console.log(i) // 1, 2, 3 +} +// console.log(i), Uncaught ReferenceError: gravity is not defined + +``` + +The scope *let* and *const* is the same. The difference is only reassigning. We can not change or reassign the value of const variable. + +## 📔 Object + +Everything can be an object and objects do have properties and properties have values. +Creating an object literal. To create an object literal, we use two curly brackets. + +### Creating an empty object + +An empty object + +```js +const person = {} +``` + +### Creating an objecting with values + +Now, the person object has firstName, lastName, age, location, skills and isMarried properties. The value of properties or keys could be a string, number, boolean, an object, null, undefined or a function. + +Let us see some examples of object. Each key has a value in object. + +```js +const rectangle = { + length: 20, + width: 20 +} +console.log(rectangle) // {length: 20, width: 20} + +const person = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', + age: 250, + country: 'Finland', + city: 'Helsinki', + skills: [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Node', + 'MongoDB', + 'Python', + 'D3.js' + ], + isMarried: true +} +console.log(person) +``` + +### Getting values from an object + +We can access values of object using two methods: + +- using . followed by key name if the key-name is a one word +- using square bracket and a quote + +```js +const person = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', + age: 250, + country: 'Finland', + city: 'Helsinki', + skills: [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Node', + 'MongoDB', + 'Python', + 'D3.js' + ], + getFullName: function() { + return `${this.firstName}${this.lastName}` + }, + 'phone number': '+3584545454545' +} + +// accessing values using . +console.log(person.firstName) +console.log(person.lastName) +console.log(person.age) +console.log(person.location) + +// value can be accessed using square bracket and key name +console.log(person['firstName']) +console.log(person['lastName']) +console.log(person['age']) +console.log(person['age']) +console.log(person['location']) + +// for instance to access the phone number we only use the square bracket method +console.log(person['phone number']) +``` + +### Creating object methods + +Now, the person object has getFullName properties. The getFullName is function inside the person object and we call it an object method. The _this_ key word refers to the object itself. We can use the word _this_ to access the values of different properties of the object. We can not use an arrow function as object method because the word this refers to the window inside an arrow function instead of the object itself. Example of object: + +```js +const person = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', + age: 250, + country: 'Finland', + city: 'Helsinki', + skills: [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Node', + 'MongoDB', + 'Python', + 'D3.js' + ], + getFullName: function() { + return `${this.firstName} ${this.lastName}` + } +} + +console.log(person.getFullName()) +// Asabeneh Yetayeh +``` + +### Setting new key for an object + +An object is a mutable data structure and we can modify the content of an object after it gets created. + +Setting a new keys in an object + +```js +const person = { + firstName: 'Asabeneh', + lastName: 'Yetayeh', + age: 250, + country: 'Finland', + city: 'Helsinki', + skills: [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Node', + 'MongoDB', + 'Python', + 'D3.js' + ], + getFullName: function() { + return `${this.firstName} ${this.lastName}` + } +} +person.nationality = 'Ethiopian' +person.country = 'Finland' +person.title = 'teacher' +person.skills.push('Meteor') +person.skills.push('SasS') +person.isMarried = true + +person.getPersonInfo = function() { + let skillsWithoutLastSkill = this.skills + .splice(0, this.skills.length - 1) + .join(', ') + let lastSkill = this.skills.splice(this.skills.length - 1)[0] + + let skills = `${skillsWithoutLastSkill}, and ${lastSkill}` + let fullName = this.getFullName() + let statement = `${fullName} is a ${this.title}.\nHe lives in ${this.country}.\nHe teaches ${skills}.` + return statement +} +console.log(person) +console.log(person.getPersonInfo()) +``` + +```sh +Asabeneh Yetayeh is a teacher. +He lives in Finland. +He teaches HTML, CSS, JavaScript, React, Node, MongoDB, Python, D3.js, Meteor, and SasS. +``` + +### Object Methods + +There are different methods to manipulate an object. Let us see some of the available methods. + +_Object.assign_: To copy an object without modifying the original object + +```js +const person = { + name: 'Asabeneh', + age: 200, + country: 'Finland', + skills: ['HTML', 'CSS', 'JS'], + title: 'teacher', + address: { + street: 'Heitamienkatu 16', + pobox: 2002, + city: 'Helsinki' + }, + getPersonInfo: function() { + return `I am ${this.name} and I live in ${this.country}. I am ${this.age}.` + } +} + +//Object methods: Object.assign, Object.keys, Object.values, Object.entries +//hasOwnProperty + +const copyPerson = Object.assign({}, person) +console.log(copyPerson) +``` + +#### Getting object keys using Object.keys() + +_Object.keys_: To get the keys or properties of an object as an array + +```js +const keys = Object.keys(copyPerson) +console.log(keys) //['name', 'age', 'country', 'skills', 'address', 'getPersonInfo'] +const address = Object.keys(copyPerson.address) +console.log(address) //['street', 'pobox', 'city'] +``` + +#### Getting object values using Object.values() + +_Object.values_:To get values of an object as an array + +```js +const values = Object.values(copyPerson) +console.log(values) +``` + +#### Getting object keys and values using Object.entries() + +_Object.entries_:To get the keys and values in an array + +```js +const entries = Object.entries(copyPerson) +console.log(entries) +``` + +#### Checking properties using hasOwnProperty() + +_hasOwnProperty_: To check if a specific key or property exist in an object + +```js +console.log(copyPerson.hasOwnProperty('name')) +console.log(copyPerson.hasOwnProperty('score')) +``` + +## 💻 Exercises + +1. Create an empty object called dog +1. Print the the dog object on the console +1. Add name, legs, color, age and bark properties for the dog object. The bark property is a method which return _woof woof_ +1. Get name, legs, color, age and bark value from the dog object +1. Set new properties the dog object: breed, getDogInfo +1. Create an object literal called _personAccount_. It has _firstName, lastName, incomes, expenses_ properties and it has _totalIncome, totalExpense, accountInfo,addIncome, addExpense_ and _accountBalance_ methods. Incomes is a set of incomes and its description and expenses is a set of incomes and its description. +1. Count logged in users,count users having greater than equal to 50 points from the following object. + + ````js + const users = { + Alex: { + email: 'alex@alex.com', + skills: ['HTML', 'CSS', 'JavaScript'], + age: 20, + isLoggedIn: false, + points: 30 + }, + Asab: { + email: 'asab@asab.com', + skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'], + age: 25, + isLoggedIn: false, + points: 50 + }, + Brook: { + email: 'daniel@daniel.com', + skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'], + age: 30, + isLoggedIn: true, + points: 50 + }, + Daniel: { + email: 'daniel@alex.com', + skills: ['HTML', 'CSS', 'JavaScript', 'Python'], + age: 20, + isLoggedIn: false, + points: 40 + }, + John: { + email: 'john@john.com', + skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux', 'Node.js'], + age: 20, + isLoggedIn: true, + points: 50 + }, + Thomas: { + email: 'thomas@thomas.com', + skills: ['HTML', 'CSS', 'JavaScript', 'React'], + age: 20, + isLoggedIn: false, + points: 40 + }, + Paul: { + email: 'paul@paul.com', + skills: ['HTML', 'CSS', 'JavaScript', 'MongoDB', 'Express', 'React', 'Node'], + age: 20, + isLoggedIn: false, + points: 40 + } + }``` + + ```` + +1. Find people who are MERN stack developer from the users object +1. Set your name in the users object without modifying the original users object +1. Get all keys or properties of users object +1. Get all the values of users object +1. Use the countries object to print a country name, capital, populations and languages. +1. \*\*\* Find the 10 most spoken languages: + + ````js + // Your output should look like this + console.log(mostSpokenLanguages(countries, 10)) + [(91, 'English'), + (45, 'French'), + (25, 'Arabic'), + (24, 'Spanish'), + (9, 'Russian'), + (9, 'Portuguese'), + (8, 'Dutch'), + (7, 'German'), + (5, 'Chinese'), + (4, 'Swahili'), + (4, 'Serbian')] + + // Your output should look like this + console.log(mostSpokenLanguages(countries, 3)) + [ + (91, 'English'), + (45, 'French'), + (25, 'Arabic') + ]``` + + ```` + +1. \*\*\* Use countries_data.js file create a function which create the ten most populated countries + + ````js + console.log(mostPopulatedCountries(countries, 10)) + + [ + {country: 'China', population: 1377422166}, + {country: 'India', population: 1295210000}, + {country: 'United States of America', population: 323947000}, + {country: 'Indonesia', population: 258705000}, + {country: 'Brazil', population: 206135893}, + {country: 'Pakistan', population: 194125062}, + {country: 'Nigeria', population: 186988000}, + {country: 'Bangladesh', population: 161006790}, + {country: 'Russian Federation', population: 146599183}, + {country: 'Japan', population: 126960000} + ] + + console.log(mostPopulatedCountries(countries, 3)) + [ + {country: 'China', population: 1377422166}, + {country: 'India', population: 1295210000}, + {country: 'United States of America', population: 323947000} + ]``` + + ```` + +1. \*\*\* Try to develop a program which calculate measure of central tendency of a sample(mean, median, mode) and measure of variability(range, variance, standard deviation). In addition to those measures find the min, max, count, percentile, and frequency distribution of the sample. You can create an object called statistics and create all the functions which do statistical calculations as method for the statistics object. Check the output below. + + ```js + const ages = [31, 26, 34, 37, 27, 26, 32, 32, 26, 27, 27, 24, 32, 33, 27, 25, 26, 38, 37, 31, 34, 24, 33, 29, 26] + + console.log('Count:', statistics.count()) // 25 + console.log('Sum: ', statistics.sum()) // 744 + console.log('Min: ', statistics.min()) // 24 + console.log('Max: ', statistics.max()) // 38 + console.log('Range: ', statistics.range() // 14 + console.log('Mean: ', statistics.mean()) // 30 + console.log('Median: ',statistics.median()) // 29 + console.log('Mode: ', statistics.mode()) // {'mode': 26, 'count': 5} + console.log('Variance: ',statistics.var()) // 17.5 + console.log('Standard Deviation: ', statistics.std()) // 4.2 + console.log('Variance: ',statistics.var()) // 17.5 + console.log('Frequency Distribution: ',statistics.freqDist()) # [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] + ``` + + ```sh + console.log(statistics.describe()) + Count: 25 + Sum: 744 + Min: 24 + Max: 38 + Range: 14 + Mean: 30 + Median: 29 + Mode: (26, 5) + Variance: 17.5 + Standard Deviation: 4.2 + Frequency Distribution: [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] + ``` + +🎉 CONGRATULATIONS ! 🎉 + +[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/09_Day/09_day_function_programming.md) | [Day 9 >>](#) diff --git a/08_Day/08_day_starter/data/countries_obj.js b/08_Day/08_day_starter/data/countries_obj.js new file mode 100644 index 0000000..92acddd --- /dev/null +++ b/08_Day/08_day_starter/data/countries_obj.js @@ -0,0 +1,2013 @@ +const countries = [ + { + name: 'Afghanistan', + capital: 'Kabul', + languages: ['Pashto', 'Uzbek', 'Turkmen'], + population: 27657145, + flag: 'https://restcountries.eu/data/afg.svg', + currency: 'Afghan afghani' + }, + { + name: 'Åland Islands', + capital: 'Mariehamn', + languages: ['Swedish'], + population: 28875, + flag: 'https://restcountries.eu/data/ala.svg', + currency: 'Euro' + }, + { + name: 'Albania', + capital: 'Tirana', + languages: ['Albanian'], + population: 2886026, + flag: 'https://restcountries.eu/data/alb.svg', + currency: 'Albanian lek' + }, + { + name: 'Algeria', + capital: 'Algiers', + languages: ['Arabic'], + population: 40400000, + flag: 'https://restcountries.eu/data/dza.svg', + currency: 'Algerian dinar' + }, + { + name: 'American Samoa', + capital: 'Pago Pago', + languages: ['English', 'Samoan'], + population: 57100, + flag: 'https://restcountries.eu/data/asm.svg', + currency: 'United State Dollar' + }, + { + name: 'Andorra', + capital: 'Andorra la Vella', + languages: ['Catalan'], + population: 78014, + flag: 'https://restcountries.eu/data/and.svg', + currency: 'Euro' + }, + { + name: 'Angola', + capital: 'Luanda', + languages: ['Portuguese'], + population: 25868000, + flag: 'https://restcountries.eu/data/ago.svg', + currency: 'Angolan kwanza' + }, + { + name: 'Anguilla', + capital: 'The Valley', + languages: ['English'], + population: 13452, + flag: 'https://restcountries.eu/data/aia.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Antarctica', + capital: '', + languages: ['English', 'Russian'], + population: 1000, + flag: 'https://restcountries.eu/data/ata.svg', + currency: 'Australian dollar' + }, + { + name: 'Antigua and Barbuda', + capital: "Saint John's", + languages: ['English'], + population: 86295, + flag: 'https://restcountries.eu/data/atg.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Argentina', + capital: 'Buenos Aires', + languages: ['Spanish', 'Guaraní'], + population: 43590400, + flag: 'https://restcountries.eu/data/arg.svg', + currency: 'Argentine peso' + }, + { + name: 'Armenia', + capital: 'Yerevan', + languages: ['Armenian', 'Russian'], + population: 2994400, + flag: 'https://restcountries.eu/data/arm.svg', + currency: 'Armenian dram' + }, + { + name: 'Aruba', + capital: 'Oranjestad', + languages: ['Dutch', '(Eastern) Punjabi'], + population: 107394, + flag: 'https://restcountries.eu/data/abw.svg', + currency: 'Aruban florin' + }, + { + name: 'Australia', + capital: 'Canberra', + languages: ['English'], + population: 24117360, + flag: 'https://restcountries.eu/data/aus.svg', + currency: 'Australian dollar' + }, + { + name: 'Austria', + capital: 'Vienna', + languages: ['German'], + population: 8725931, + flag: 'https://restcountries.eu/data/aut.svg', + currency: 'Euro' + }, + { + name: 'Azerbaijan', + capital: 'Baku', + languages: ['Azerbaijani'], + population: 9730500, + flag: 'https://restcountries.eu/data/aze.svg', + currency: 'Azerbaijani manat' + }, + { + name: 'Bahamas', + capital: 'Nassau', + languages: ['English'], + population: 378040, + flag: 'https://restcountries.eu/data/bhs.svg', + currency: 'Bahamian dollar' + }, + { + name: 'Bahrain', + capital: 'Manama', + languages: ['Arabic'], + population: 1404900, + flag: 'https://restcountries.eu/data/bhr.svg', + currency: 'Bahraini dinar' + }, + { + name: 'Bangladesh', + capital: 'Dhaka', + languages: ['Bengali'], + population: 161006790, + flag: 'https://restcountries.eu/data/bgd.svg', + currency: 'Bangladeshi taka' + }, + { + name: 'Barbados', + capital: 'Bridgetown', + languages: ['English'], + population: 285000, + flag: 'https://restcountries.eu/data/brb.svg', + currency: 'Barbadian dollar' + }, + { + name: 'Belarus', + capital: 'Minsk', + languages: ['Belarusian', 'Russian'], + population: 9498700, + flag: 'https://restcountries.eu/data/blr.svg', + currency: 'New Belarusian ruble' + }, + { + name: 'Belgium', + capital: 'Brussels', + languages: ['Dutch', 'French', 'German'], + population: 11319511, + flag: 'https://restcountries.eu/data/bel.svg', + currency: 'Euro' + }, + { + name: 'Belize', + capital: 'Belmopan', + languages: ['English', 'Spanish'], + population: 370300, + flag: 'https://restcountries.eu/data/blz.svg', + currency: 'Belize dollar' + }, + { + name: 'Benin', + capital: 'Porto-Novo', + languages: ['French'], + population: 10653654, + flag: 'https://restcountries.eu/data/ben.svg', + currency: 'West African CFA franc' + }, + { + name: 'Bermuda', + capital: 'Hamilton', + languages: ['English'], + population: 61954, + flag: 'https://restcountries.eu/data/bmu.svg', + currency: 'Bermudian dollar' + }, + { + name: 'Bhutan', + capital: 'Thimphu', + languages: ['Dzongkha'], + population: 775620, + flag: 'https://restcountries.eu/data/btn.svg', + currency: 'Bhutanese ngultrum' + }, + { + name: 'Bolivia (Plurinational State of)', + capital: 'Sucre', + languages: ['Spanish', 'Aymara', 'Quechua'], + population: 10985059, + flag: 'https://restcountries.eu/data/bol.svg', + currency: 'Bolivian boliviano' + }, + { + name: 'Bonaire, Sint Eustatius and Saba', + capital: 'Kralendijk', + languages: ['Dutch'], + population: 17408, + flag: 'https://restcountries.eu/data/bes.svg', + currency: 'United States dollar' + }, + { + name: 'Bosnia and Herzegovina', + capital: 'Sarajevo', + languages: ['Bosnian', 'Croatian', 'Serbian'], + population: 3531159, + flag: 'https://restcountries.eu/data/bih.svg', + currency: 'Bosnia and Herzegovina convertible mark' + }, + { + name: 'Botswana', + capital: 'Gaborone', + languages: ['English', 'Tswana'], + population: 2141206, + flag: 'https://restcountries.eu/data/bwa.svg', + currency: 'Botswana pula' + }, + { + name: 'Bouvet Island', + capital: '', + languages: ['Norwegian', 'Norwegian Bokmål', 'Norwegian Nynorsk'], + population: 0, + flag: 'https://restcountries.eu/data/bvt.svg', + currency: 'Norwegian krone' + }, + { + name: 'Brazil', + capital: 'Brasília', + languages: ['Portuguese'], + population: 206135893, + flag: 'https://restcountries.eu/data/bra.svg', + currency: 'Brazilian real' + }, + { + name: 'British Indian Ocean Territory', + capital: 'Diego Garcia', + languages: ['English'], + population: 3000, + flag: 'https://restcountries.eu/data/iot.svg', + currency: 'United States dollar' + }, + { + name: 'United States Minor Outlying Islands', + capital: '', + languages: ['English'], + population: 300, + flag: 'https://restcountries.eu/data/umi.svg', + currency: 'United States Dollar' + }, + { + name: 'Virgin Islands (British)', + capital: 'Road Town', + languages: ['English'], + population: 28514, + flag: 'https://restcountries.eu/data/vgb.svg', + currency: '[D]' + }, + { + name: 'Virgin Islands (U.S.)', + capital: 'Charlotte Amalie', + languages: ['English'], + population: 114743, + flag: 'https://restcountries.eu/data/vir.svg', + currency: 'United States dollar' + }, + { + name: 'Brunei Darussalam', + capital: 'Bandar Seri Begawan', + languages: ['Malay'], + population: 411900, + flag: 'https://restcountries.eu/data/brn.svg', + currency: 'Brunei dollar' + }, + { + name: 'Bulgaria', + capital: 'Sofia', + languages: ['Bulgarian'], + population: 7153784, + flag: 'https://restcountries.eu/data/bgr.svg', + currency: 'Bulgarian lev' + }, + { + name: 'Burkina Faso', + capital: 'Ouagadougou', + languages: ['French', 'Fula'], + population: 19034397, + flag: 'https://restcountries.eu/data/bfa.svg', + currency: 'West African CFA franc' + }, + { + name: 'Burundi', + capital: 'Bujumbura', + languages: ['French', 'Kirundi'], + population: 10114505, + flag: 'https://restcountries.eu/data/bdi.svg', + currency: 'Burundian franc' + }, + { + name: 'Cambodia', + capital: 'Phnom Penh', + languages: ['Khmer'], + population: 15626444, + flag: 'https://restcountries.eu/data/khm.svg', + currency: 'Cambodian riel' + }, + { + name: 'Cameroon', + capital: 'Yaoundé', + languages: ['English', 'French'], + population: 22709892, + flag: 'https://restcountries.eu/data/cmr.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Canada', + capital: 'Ottawa', + languages: ['English', 'French'], + population: 36155487, + flag: 'https://restcountries.eu/data/can.svg', + currency: 'Canadian dollar' + }, + { + name: 'Cabo Verde', + capital: 'Praia', + languages: ['Portuguese'], + population: 531239, + flag: 'https://restcountries.eu/data/cpv.svg', + currency: 'Cape Verdean escudo' + }, + { + name: 'Cayman Islands', + capital: 'George Town', + languages: ['English'], + population: 58238, + flag: 'https://restcountries.eu/data/cym.svg', + currency: 'Cayman Islands dollar' + }, + { + name: 'Central African Republic', + capital: 'Bangui', + languages: ['French', 'Sango'], + population: 4998000, + flag: 'https://restcountries.eu/data/caf.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Chad', + capital: "N'Djamena", + languages: ['French', 'Arabic'], + population: 14497000, + flag: 'https://restcountries.eu/data/tcd.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Chile', + capital: 'Santiago', + languages: ['Spanish'], + population: 18191900, + flag: 'https://restcountries.eu/data/chl.svg', + currency: 'Chilean peso' + }, + { + name: 'China', + capital: 'Beijing', + languages: ['Chinese'], + population: 1377422166, + flag: 'https://restcountries.eu/data/chn.svg', + currency: 'Chinese yuan' + }, + { + name: 'Christmas Island', + capital: 'Flying Fish Cove', + languages: ['English'], + population: 2072, + flag: 'https://restcountries.eu/data/cxr.svg', + currency: 'Australian dollar' + }, + { + name: 'Cocos (Keeling) Islands', + capital: 'West Island', + languages: ['English'], + population: 550, + flag: 'https://restcountries.eu/data/cck.svg', + currency: 'Australian dollar' + }, + { + name: 'Colombia', + capital: 'Bogotá', + languages: ['Spanish'], + population: 48759958, + flag: 'https://restcountries.eu/data/col.svg', + currency: 'Colombian peso' + }, + { + name: 'Comoros', + capital: 'Moroni', + languages: ['Arabic', 'French'], + population: 806153, + flag: 'https://restcountries.eu/data/com.svg', + currency: 'Comorian franc' + }, + { + name: 'Congo', + capital: 'Brazzaville', + languages: ['French', 'Lingala'], + population: 4741000, + flag: 'https://restcountries.eu/data/cog.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Congo (Democratic Republic of the)', + capital: 'Kinshasa', + languages: ['French', 'Lingala', 'Kongo', 'Swahili', 'Luba-Katanga'], + population: 85026000, + flag: 'https://restcountries.eu/data/cod.svg', + currency: 'Congolese franc' + }, + { + name: 'Cook Islands', + capital: 'Avarua', + languages: ['English'], + population: 18100, + flag: 'https://restcountries.eu/data/cok.svg', + currency: 'New Zealand dollar' + }, + { + name: 'Costa Rica', + capital: 'San José', + languages: ['Spanish'], + population: 4890379, + flag: 'https://restcountries.eu/data/cri.svg', + currency: 'Costa Rican colón' + }, + { + name: 'Croatia', + capital: 'Zagreb', + languages: ['Croatian'], + population: 4190669, + flag: 'https://restcountries.eu/data/hrv.svg', + currency: 'Croatian kuna' + }, + { + name: 'Cuba', + capital: 'Havana', + languages: ['Spanish'], + population: 11239004, + flag: 'https://restcountries.eu/data/cub.svg', + currency: 'Cuban convertible peso' + }, + { + name: 'Curaçao', + capital: 'Willemstad', + languages: ['Dutch', '(Eastern) Punjabi', 'English'], + population: 154843, + flag: 'https://restcountries.eu/data/cuw.svg', + currency: 'Netherlands Antillean guilder' + }, + { + name: 'Cyprus', + capital: 'Nicosia', + languages: ['Greek (modern)', 'Turkish', 'Armenian'], + population: 847000, + flag: 'https://restcountries.eu/data/cyp.svg', + currency: 'Euro' + }, + { + name: 'Czech Republic', + capital: 'Prague', + languages: ['Czech', 'Slovak'], + population: 10558524, + flag: 'https://restcountries.eu/data/cze.svg', + currency: 'Czech koruna' + }, + { + name: 'Denmark', + capital: 'Copenhagen', + languages: ['Danish'], + population: 5717014, + flag: 'https://restcountries.eu/data/dnk.svg', + currency: 'Danish krone' + }, + { + name: 'Djibouti', + capital: 'Djibouti', + languages: ['French', 'Arabic'], + population: 900000, + flag: 'https://restcountries.eu/data/dji.svg', + currency: 'Djiboutian franc' + }, + { + name: 'Dominica', + capital: 'Roseau', + languages: ['English'], + population: 71293, + flag: 'https://restcountries.eu/data/dma.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Dominican Republic', + capital: 'Santo Domingo', + languages: ['Spanish'], + population: 10075045, + flag: 'https://restcountries.eu/data/dom.svg', + currency: 'Dominican peso' + }, + { + name: 'Ecuador', + capital: 'Quito', + languages: ['Spanish'], + population: 16545799, + flag: 'https://restcountries.eu/data/ecu.svg', + currency: 'United States dollar' + }, + { + name: 'Egypt', + capital: 'Cairo', + languages: ['Arabic'], + population: 91290000, + flag: 'https://restcountries.eu/data/egy.svg', + currency: 'Egyptian pound' + }, + { + name: 'El Salvador', + capital: 'San Salvador', + languages: ['Spanish'], + population: 6520675, + flag: 'https://restcountries.eu/data/slv.svg', + currency: 'United States dollar' + }, + { + name: 'Equatorial Guinea', + capital: 'Malabo', + languages: ['Spanish', 'French'], + population: 1222442, + flag: 'https://restcountries.eu/data/gnq.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Eritrea', + capital: 'Asmara', + languages: ['Tigrinya', 'Arabic', 'English'], + population: 5352000, + flag: 'https://restcountries.eu/data/eri.svg', + currency: 'Eritrean nakfa' + }, + { + name: 'Estonia', + capital: 'Tallinn', + languages: ['Estonian'], + population: 1315944, + flag: 'https://restcountries.eu/data/est.svg', + currency: 'Euro' + }, + { + name: 'Ethiopia', + capital: 'Addis Ababa', + languages: ['Amharic'], + population: 92206005, + flag: 'https://restcountries.eu/data/eth.svg', + currency: 'Ethiopian birr' + }, + { + name: 'Falkland Islands (Malvinas)', + capital: 'Stanley', + languages: ['English'], + population: 2563, + flag: 'https://restcountries.eu/data/flk.svg', + currency: 'Falkland Islands pound' + }, + { + name: 'Faroe Islands', + capital: 'Tórshavn', + languages: ['Faroese'], + population: 49376, + flag: 'https://restcountries.eu/data/fro.svg', + currency: 'Danish krone' + }, + { + name: 'Fiji', + capital: 'Suva', + languages: ['English', 'Fijian', 'Hindi', 'Urdu'], + population: 867000, + flag: 'https://restcountries.eu/data/fji.svg', + currency: 'Fijian dollar' + }, + { + name: 'Finland', + capital: 'Helsinki', + languages: ['Finnish', 'Swedish'], + population: 5491817, + flag: 'https://restcountries.eu/data/fin.svg', + currency: 'Euro' + }, + { + name: 'France', + capital: 'Paris', + languages: ['French'], + population: 66710000, + flag: 'https://restcountries.eu/data/fra.svg', + currency: 'Euro' + }, + { + name: 'French Guiana', + capital: 'Cayenne', + languages: ['French'], + population: 254541, + flag: 'https://restcountries.eu/data/guf.svg', + currency: 'Euro' + }, + { + name: 'French Polynesia', + capital: 'Papeetē', + languages: ['French'], + population: 271800, + flag: 'https://restcountries.eu/data/pyf.svg', + currency: 'CFP franc' + }, + { + name: 'French Southern Territories', + capital: 'Port-aux-Français', + languages: ['French'], + population: 140, + flag: 'https://restcountries.eu/data/atf.svg', + currency: 'Euro' + }, + { + name: 'Gabon', + capital: 'Libreville', + languages: ['French'], + population: 1802278, + flag: 'https://restcountries.eu/data/gab.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Gambia', + capital: 'Banjul', + languages: ['English'], + population: 1882450, + flag: 'https://restcountries.eu/data/gmb.svg', + currency: 'Gambian dalasi' + }, + { + name: 'Georgia', + capital: 'Tbilisi', + languages: ['Georgian'], + population: 3720400, + flag: 'https://restcountries.eu/data/geo.svg', + currency: 'Georgian Lari' + }, + { + name: 'Germany', + capital: 'Berlin', + languages: ['German'], + population: 81770900, + flag: 'https://restcountries.eu/data/deu.svg', + currency: 'Euro' + }, + { + name: 'Ghana', + capital: 'Accra', + languages: ['English'], + population: 27670174, + flag: 'https://restcountries.eu/data/gha.svg', + currency: 'Ghanaian cedi' + }, + { + name: 'Gibraltar', + capital: 'Gibraltar', + languages: ['English'], + population: 33140, + flag: 'https://restcountries.eu/data/gib.svg', + currency: 'Gibraltar pound' + }, + { + name: 'Greece', + capital: 'Athens', + languages: ['Greek (modern)'], + population: 10858018, + flag: 'https://restcountries.eu/data/grc.svg', + currency: 'Euro' + }, + { + name: 'Greenland', + capital: 'Nuuk', + languages: ['Kalaallisut'], + population: 55847, + flag: 'https://restcountries.eu/data/grl.svg', + currency: 'Danish krone' + }, + { + name: 'Grenada', + capital: "St. George's", + languages: ['English'], + population: 103328, + flag: 'https://restcountries.eu/data/grd.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Guadeloupe', + capital: 'Basse-Terre', + languages: ['French'], + population: 400132, + flag: 'https://restcountries.eu/data/glp.svg', + currency: 'Euro' + }, + { + name: 'Guam', + capital: 'Hagåtña', + languages: ['English', 'Chamorro', 'Spanish'], + population: 184200, + flag: 'https://restcountries.eu/data/gum.svg', + currency: 'United States dollar' + }, + { + name: 'Guatemala', + capital: 'Guatemala City', + languages: ['Spanish'], + population: 16176133, + flag: 'https://restcountries.eu/data/gtm.svg', + currency: 'Guatemalan quetzal' + }, + { + name: 'Guernsey', + capital: 'St. Peter Port', + languages: ['English', 'French'], + population: 62999, + flag: 'https://restcountries.eu/data/ggy.svg', + currency: 'British pound' + }, + { + name: 'Guinea', + capital: 'Conakry', + languages: ['French', 'Fula'], + population: 12947000, + flag: 'https://restcountries.eu/data/gin.svg', + currency: 'Guinean franc' + }, + { + name: 'Guinea-Bissau', + capital: 'Bissau', + languages: ['Portuguese'], + population: 1547777, + flag: 'https://restcountries.eu/data/gnb.svg', + currency: 'West African CFA franc' + }, + { + name: 'Guyana', + capital: 'Georgetown', + languages: ['English'], + population: 746900, + flag: 'https://restcountries.eu/data/guy.svg', + currency: 'Guyanese dollar' + }, + { + name: 'Haiti', + capital: 'Port-au-Prince', + languages: ['French', 'Haitian'], + population: 11078033, + flag: 'https://restcountries.eu/data/hti.svg', + currency: 'Haitian gourde' + }, + { + name: 'Heard Island and McDonald Islands', + capital: '', + languages: ['English'], + population: 0, + flag: 'https://restcountries.eu/data/hmd.svg', + currency: 'Australian dollar' + }, + { + name: 'Holy See', + capital: 'Rome', + languages: ['Latin', 'Italian', 'French', 'German'], + population: 451, + flag: 'https://restcountries.eu/data/vat.svg', + currency: 'Euro' + }, + { + name: 'Honduras', + capital: 'Tegucigalpa', + languages: ['Spanish'], + population: 8576532, + flag: 'https://restcountries.eu/data/hnd.svg', + currency: 'Honduran lempira' + }, + { + name: 'Hong Kong', + capital: 'City of Victoria', + languages: ['English', 'Chinese'], + population: 7324300, + flag: 'https://restcountries.eu/data/hkg.svg', + currency: 'Hong Kong dollar' + }, + { + name: 'Hungary', + capital: 'Budapest', + languages: ['Hungarian'], + population: 9823000, + flag: 'https://restcountries.eu/data/hun.svg', + currency: 'Hungarian forint' + }, + { + name: 'Iceland', + capital: 'Reykjavík', + languages: ['Icelandic'], + population: 334300, + flag: 'https://restcountries.eu/data/isl.svg', + currency: 'Icelandic króna' + }, + { + name: 'India', + capital: 'New Delhi', + languages: ['Hindi', 'English'], + population: 1295210000, + flag: 'https://restcountries.eu/data/ind.svg', + currency: 'Indian rupee' + }, + { + name: 'Indonesia', + capital: 'Jakarta', + languages: ['Indonesian'], + population: 258705000, + flag: 'https://restcountries.eu/data/idn.svg', + currency: 'Indonesian rupiah' + }, + { + name: "Côte d'Ivoire", + capital: 'Yamoussoukro', + languages: ['French'], + population: 22671331, + flag: 'https://restcountries.eu/data/civ.svg', + currency: 'West African CFA franc' + }, + { + name: 'Iran (Islamic Republic of)', + capital: 'Tehran', + languages: ['Persian (Farsi)'], + population: 79369900, + flag: 'https://restcountries.eu/data/irn.svg', + currency: 'Iranian rial' + }, + { + name: 'Iraq', + capital: 'Baghdad', + languages: ['Arabic', 'Kurdish'], + population: 37883543, + flag: 'https://restcountries.eu/data/irq.svg', + currency: 'Iraqi dinar' + }, + { + name: 'Ireland', + capital: 'Dublin', + languages: ['Irish', 'English'], + population: 6378000, + flag: 'https://restcountries.eu/data/irl.svg', + currency: 'Euro' + }, + { + name: 'Isle of Man', + capital: 'Douglas', + languages: ['English', 'Manx'], + population: 84497, + flag: 'https://restcountries.eu/data/imn.svg', + currency: 'British pound' + }, + { + name: 'Israel', + capital: 'Jerusalem', + languages: ['Hebrew (modern)', 'Arabic'], + population: 8527400, + flag: 'https://restcountries.eu/data/isr.svg', + currency: 'Israeli new shekel' + }, + { + name: 'Italy', + capital: 'Rome', + languages: ['Italian'], + population: 60665551, + flag: 'https://restcountries.eu/data/ita.svg', + currency: 'Euro' + }, + { + name: 'Jamaica', + capital: 'Kingston', + languages: ['English'], + population: 2723246, + flag: 'https://restcountries.eu/data/jam.svg', + currency: 'Jamaican dollar' + }, + { + name: 'Japan', + capital: 'Tokyo', + languages: ['Japanese'], + population: 126960000, + flag: 'https://restcountries.eu/data/jpn.svg', + currency: 'Japanese yen' + }, + { + name: 'Jersey', + capital: 'Saint Helier', + languages: ['English', 'French'], + population: 100800, + flag: 'https://restcountries.eu/data/jey.svg', + currency: 'British pound' + }, + { + name: 'Jordan', + capital: 'Amman', + languages: ['Arabic'], + population: 9531712, + flag: 'https://restcountries.eu/data/jor.svg', + currency: 'Jordanian dinar' + }, + { + name: 'Kazakhstan', + capital: 'Astana', + languages: ['Kazakh', 'Russian'], + population: 17753200, + flag: 'https://restcountries.eu/data/kaz.svg', + currency: 'Kazakhstani tenge' + }, + { + name: 'Kenya', + capital: 'Nairobi', + languages: ['English', 'Swahili'], + population: 47251000, + flag: 'https://restcountries.eu/data/ken.svg', + currency: 'Kenyan shilling' + }, + { + name: 'Kiribati', + capital: 'South Tarawa', + languages: ['English'], + population: 113400, + flag: 'https://restcountries.eu/data/kir.svg', + currency: 'Australian dollar' + }, + { + name: 'Kuwait', + capital: 'Kuwait City', + languages: ['Arabic'], + population: 4183658, + flag: 'https://restcountries.eu/data/kwt.svg', + currency: 'Kuwaiti dinar' + }, + { + name: 'Kyrgyzstan', + capital: 'Bishkek', + languages: ['Kyrgyz', 'Russian'], + population: 6047800, + flag: 'https://restcountries.eu/data/kgz.svg', + currency: 'Kyrgyzstani som' + }, + { + name: "Lao People's Democratic Republic", + capital: 'Vientiane', + languages: ['Lao'], + population: 6492400, + flag: 'https://restcountries.eu/data/lao.svg', + currency: 'Lao kip' + }, + { + name: 'Latvia', + capital: 'Riga', + languages: ['Latvian'], + population: 1961600, + flag: 'https://restcountries.eu/data/lva.svg', + currency: 'Euro' + }, + { + name: 'Lebanon', + capital: 'Beirut', + languages: ['Arabic', 'French'], + population: 5988000, + flag: 'https://restcountries.eu/data/lbn.svg', + currency: 'Lebanese pound' + }, + { + name: 'Lesotho', + capital: 'Maseru', + languages: ['English', 'Southern Sotho'], + population: 1894194, + flag: 'https://restcountries.eu/data/lso.svg', + currency: 'Lesotho loti' + }, + { + name: 'Liberia', + capital: 'Monrovia', + languages: ['English'], + population: 4615000, + flag: 'https://restcountries.eu/data/lbr.svg', + currency: 'Liberian dollar' + }, + { + name: 'Libya', + capital: 'Tripoli', + languages: ['Arabic'], + population: 6385000, + flag: 'https://restcountries.eu/data/lby.svg', + currency: 'Libyan dinar' + }, + { + name: 'Liechtenstein', + capital: 'Vaduz', + languages: ['German'], + population: 37623, + flag: 'https://restcountries.eu/data/lie.svg', + currency: 'Swiss franc' + }, + { + name: 'Lithuania', + capital: 'Vilnius', + languages: ['Lithuanian'], + population: 2872294, + flag: 'https://restcountries.eu/data/ltu.svg', + currency: 'Euro' + }, + { + name: 'Luxembourg', + capital: 'Luxembourg', + languages: ['French', 'German', 'Luxembourgish'], + population: 576200, + flag: 'https://restcountries.eu/data/lux.svg', + currency: 'Euro' + }, + { + name: 'Macao', + capital: '', + languages: ['Chinese', 'Portuguese'], + population: 649100, + flag: 'https://restcountries.eu/data/mac.svg', + currency: 'Macanese pataca' + }, + { + name: 'Macedonia (the former Yugoslav Republic of)', + capital: 'Skopje', + languages: ['Macedonian'], + population: 2058539, + flag: 'https://restcountries.eu/data/mkd.svg', + currency: 'Macedonian denar' + }, + { + name: 'Madagascar', + capital: 'Antananarivo', + languages: ['French', 'Malagasy'], + population: 22434363, + flag: 'https://restcountries.eu/data/mdg.svg', + currency: 'Malagasy ariary' + }, + { + name: 'Malawi', + capital: 'Lilongwe', + languages: ['English', 'Chichewa'], + population: 16832910, + flag: 'https://restcountries.eu/data/mwi.svg', + currency: 'Malawian kwacha' + }, + { + name: 'Malaysia', + capital: 'Kuala Lumpur', + languages: ['Malaysian'], + population: 31405416, + flag: 'https://restcountries.eu/data/mys.svg', + currency: 'Malaysian ringgit' + }, + { + name: 'Maldives', + capital: 'Malé', + languages: ['Divehi'], + population: 344023, + flag: 'https://restcountries.eu/data/mdv.svg', + currency: 'Maldivian rufiyaa' + }, + { + name: 'Mali', + capital: 'Bamako', + languages: ['French'], + population: 18135000, + flag: 'https://restcountries.eu/data/mli.svg', + currency: 'West African CFA franc' + }, + { + name: 'Malta', + capital: 'Valletta', + languages: ['Maltese', 'English'], + population: 425384, + flag: 'https://restcountries.eu/data/mlt.svg', + currency: 'Euro' + }, + { + name: 'Marshall Islands', + capital: 'Majuro', + languages: ['English', 'Marshallese'], + population: 54880, + flag: 'https://restcountries.eu/data/mhl.svg', + currency: 'United States dollar' + }, + { + name: 'Martinique', + capital: 'Fort-de-France', + languages: ['French'], + population: 378243, + flag: 'https://restcountries.eu/data/mtq.svg', + currency: 'Euro' + }, + { + name: 'Mauritania', + capital: 'Nouakchott', + languages: ['Arabic'], + population: 3718678, + flag: 'https://restcountries.eu/data/mrt.svg', + currency: 'Mauritanian ouguiya' + }, + { + name: 'Mauritius', + capital: 'Port Louis', + languages: ['English'], + population: 1262879, + flag: 'https://restcountries.eu/data/mus.svg', + currency: 'Mauritian rupee' + }, + { + name: 'Mayotte', + capital: 'Mamoudzou', + languages: ['French'], + population: 226915, + flag: 'https://restcountries.eu/data/myt.svg', + currency: 'Euro' + }, + { + name: 'Mexico', + capital: 'Mexico City', + languages: ['Spanish'], + population: 122273473, + flag: 'https://restcountries.eu/data/mex.svg', + currency: 'Mexican peso' + }, + { + name: 'Micronesia (Federated States of)', + capital: 'Palikir', + languages: ['English'], + population: 102800, + flag: 'https://restcountries.eu/data/fsm.svg', + currency: '[D]' + }, + { + name: 'Moldova (Republic of)', + capital: 'Chișinău', + languages: ['Romanian'], + population: 3553100, + flag: 'https://restcountries.eu/data/mda.svg', + currency: 'Moldovan leu' + }, + { + name: 'Monaco', + capital: 'Monaco', + languages: ['French'], + population: 38400, + flag: 'https://restcountries.eu/data/mco.svg', + currency: 'Euro' + }, + { + name: 'Mongolia', + capital: 'Ulan Bator', + languages: ['Mongolian'], + population: 3093100, + flag: 'https://restcountries.eu/data/mng.svg', + currency: 'Mongolian tögrög' + }, + { + name: 'Montenegro', + capital: 'Podgorica', + languages: ['Serbian', 'Bosnian', 'Albanian', 'Croatian'], + population: 621810, + flag: 'https://restcountries.eu/data/mne.svg', + currency: 'Euro' + }, + { + name: 'Montserrat', + capital: 'Plymouth', + languages: ['English'], + population: 4922, + flag: 'https://restcountries.eu/data/msr.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Morocco', + capital: 'Rabat', + languages: ['Arabic'], + population: 33337529, + flag: 'https://restcountries.eu/data/mar.svg', + currency: 'Moroccan dirham' + }, + { + name: 'Mozambique', + capital: 'Maputo', + languages: ['Portuguese'], + population: 26423700, + flag: 'https://restcountries.eu/data/moz.svg', + currency: 'Mozambican metical' + }, + { + name: 'Myanmar', + capital: 'Naypyidaw', + languages: ['Burmese'], + population: 51419420, + flag: 'https://restcountries.eu/data/mmr.svg', + currency: 'Burmese kyat' + }, + { + name: 'Namibia', + capital: 'Windhoek', + languages: ['English', 'Afrikaans'], + population: 2324388, + flag: 'https://restcountries.eu/data/nam.svg', + currency: 'Namibian dollar' + }, + { + name: 'Nauru', + capital: 'Yaren', + languages: ['English', 'Nauruan'], + population: 10084, + flag: 'https://restcountries.eu/data/nru.svg', + currency: 'Australian dollar' + }, + { + name: 'Nepal', + capital: 'Kathmandu', + languages: ['Nepali'], + population: 28431500, + flag: 'https://restcountries.eu/data/npl.svg', + currency: 'Nepalese rupee' + }, + { + name: 'Netherlands', + capital: 'Amsterdam', + languages: ['Dutch'], + population: 17019800, + flag: 'https://restcountries.eu/data/nld.svg', + currency: 'Euro' + }, + { + name: 'New Caledonia', + capital: 'Nouméa', + languages: ['French'], + population: 268767, + flag: 'https://restcountries.eu/data/ncl.svg', + currency: 'CFP franc' + }, + { + name: 'New Zealand', + capital: 'Wellington', + languages: ['English', 'Māori'], + population: 4697854, + flag: 'https://restcountries.eu/data/nzl.svg', + currency: 'New Zealand dollar' + }, + { + name: 'Nicaragua', + capital: 'Managua', + languages: ['Spanish'], + population: 6262703, + flag: 'https://restcountries.eu/data/nic.svg', + currency: 'Nicaraguan córdoba' + }, + { + name: 'Niger', + capital: 'Niamey', + languages: ['French'], + population: 20715000, + flag: 'https://restcountries.eu/data/ner.svg', + currency: 'West African CFA franc' + }, + { + name: 'Nigeria', + capital: 'Abuja', + languages: ['English'], + population: 186988000, + flag: 'https://restcountries.eu/data/nga.svg', + currency: 'Nigerian naira' + }, + { + name: 'Niue', + capital: 'Alofi', + languages: ['English'], + population: 1470, + flag: 'https://restcountries.eu/data/niu.svg', + currency: 'New Zealand dollar' + }, + { + name: 'Norfolk Island', + capital: 'Kingston', + languages: ['English'], + population: 2302, + flag: 'https://restcountries.eu/data/nfk.svg', + currency: 'Australian dollar' + }, + { + name: "Korea (Democratic People's Republic of)", + capital: 'Pyongyang', + languages: ['Korean'], + population: 25281000, + flag: 'https://restcountries.eu/data/prk.svg', + currency: 'North Korean won' + }, + { + name: 'Northern Mariana Islands', + capital: 'Saipan', + languages: ['English', 'Chamorro'], + population: 56940, + flag: 'https://restcountries.eu/data/mnp.svg', + currency: 'United States dollar' + }, + { + name: 'Norway', + capital: 'Oslo', + languages: ['Norwegian', 'Norwegian Bokmål', 'Norwegian Nynorsk'], + population: 5223256, + flag: 'https://restcountries.eu/data/nor.svg', + currency: 'Norwegian krone' + }, + { + name: 'Oman', + capital: 'Muscat', + languages: ['Arabic'], + population: 4420133, + flag: 'https://restcountries.eu/data/omn.svg', + currency: 'Omani rial' + }, + { + name: 'Pakistan', + capital: 'Islamabad', + languages: ['English', 'Urdu'], + population: 194125062, + flag: 'https://restcountries.eu/data/pak.svg', + currency: 'Pakistani rupee' + }, + { + name: 'Palau', + capital: 'Ngerulmud', + languages: ['English'], + population: 17950, + flag: 'https://restcountries.eu/data/plw.svg', + currency: '[E]' + }, + { + name: 'Palestine, State of', + capital: 'Ramallah', + languages: ['Arabic'], + population: 4682467, + flag: 'https://restcountries.eu/data/pse.svg', + currency: 'Israeli new sheqel' + }, + { + name: 'Panama', + capital: 'Panama City', + languages: ['Spanish'], + population: 3814672, + flag: 'https://restcountries.eu/data/pan.svg', + currency: 'Panamanian balboa' + }, + { + name: 'Papua New Guinea', + capital: 'Port Moresby', + languages: ['English'], + population: 8083700, + flag: 'https://restcountries.eu/data/png.svg', + currency: 'Papua New Guinean kina' + }, + { + name: 'Paraguay', + capital: 'Asunción', + languages: ['Spanish', 'Guaraní'], + population: 6854536, + flag: 'https://restcountries.eu/data/pry.svg', + currency: 'Paraguayan guaraní' + }, + { + name: 'Peru', + capital: 'Lima', + languages: ['Spanish'], + population: 31488700, + flag: 'https://restcountries.eu/data/per.svg', + currency: 'Peruvian sol' + }, + { + name: 'Philippines', + capital: 'Manila', + languages: ['English'], + population: 103279800, + flag: 'https://restcountries.eu/data/phl.svg', + currency: 'Philippine peso' + }, + { + name: 'Pitcairn', + capital: 'Adamstown', + languages: ['English'], + population: 56, + flag: 'https://restcountries.eu/data/pcn.svg', + currency: 'New Zealand dollar' + }, + { + name: 'Poland', + capital: 'Warsaw', + languages: ['Polish'], + population: 38437239, + flag: 'https://restcountries.eu/data/pol.svg', + currency: 'Polish złoty' + }, + { + name: 'Portugal', + capital: 'Lisbon', + languages: ['Portuguese'], + population: 10374822, + flag: 'https://restcountries.eu/data/prt.svg', + currency: 'Euro' + }, + { + name: 'Puerto Rico', + capital: 'San Juan', + languages: ['Spanish', 'English'], + population: 3474182, + flag: 'https://restcountries.eu/data/pri.svg', + currency: 'United States dollar' + }, + { + name: 'Qatar', + capital: 'Doha', + languages: ['Arabic'], + population: 2587564, + flag: 'https://restcountries.eu/data/qat.svg', + currency: 'Qatari riyal' + }, + { + name: 'Republic of Kosovo', + capital: 'Pristina', + languages: ['Albanian', 'Serbian'], + population: 1733842, + flag: 'https://restcountries.eu/data/kos.svg', + currency: 'Euro' + }, + { + name: 'Réunion', + capital: 'Saint-Denis', + languages: ['French'], + population: 840974, + flag: 'https://restcountries.eu/data/reu.svg', + currency: 'Euro' + }, + { + name: 'Romania', + capital: 'Bucharest', + languages: ['Romanian'], + population: 19861408, + flag: 'https://restcountries.eu/data/rou.svg', + currency: 'Romanian leu' + }, + { + name: 'Russian Federation', + capital: 'Moscow', + languages: ['Russian'], + population: 146599183, + flag: 'https://restcountries.eu/data/rus.svg', + currency: 'Russian ruble' + }, + { + name: 'Rwanda', + capital: 'Kigali', + languages: ['Kinyarwanda', 'English', 'French'], + population: 11553188, + flag: 'https://restcountries.eu/data/rwa.svg', + currency: 'Rwandan franc' + }, + { + name: 'Saint Barthélemy', + capital: 'Gustavia', + languages: ['French'], + population: 9417, + flag: 'https://restcountries.eu/data/blm.svg', + currency: 'Euro' + }, + { + name: 'Saint Helena, Ascension and Tristan da Cunha', + capital: 'Jamestown', + languages: ['English'], + population: 4255, + flag: 'https://restcountries.eu/data/shn.svg', + currency: 'Saint Helena pound' + }, + { + name: 'Saint Kitts and Nevis', + capital: 'Basseterre', + languages: ['English'], + population: 46204, + flag: 'https://restcountries.eu/data/kna.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Saint Lucia', + capital: 'Castries', + languages: ['English'], + population: 186000, + flag: 'https://restcountries.eu/data/lca.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Saint Martin (French part)', + capital: 'Marigot', + languages: ['English', 'French', 'Dutch'], + population: 36979, + flag: 'https://restcountries.eu/data/maf.svg', + currency: 'Euro' + }, + { + name: 'Saint Pierre and Miquelon', + capital: 'Saint-Pierre', + languages: ['French'], + population: 6069, + flag: 'https://restcountries.eu/data/spm.svg', + currency: 'Euro' + }, + { + name: 'Saint Vincent and the Grenadines', + capital: 'Kingstown', + languages: ['English'], + population: 109991, + flag: 'https://restcountries.eu/data/vct.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Samoa', + capital: 'Apia', + languages: ['Samoan', 'English'], + population: 194899, + flag: 'https://restcountries.eu/data/wsm.svg', + currency: 'Samoan tālā' + }, + { + name: 'San Marino', + capital: 'City of San Marino', + languages: ['Italian'], + population: 33005, + flag: 'https://restcountries.eu/data/smr.svg', + currency: 'Euro' + }, + { + name: 'Sao Tome and Principe', + capital: 'São Tomé', + languages: ['Portuguese'], + population: 187356, + flag: 'https://restcountries.eu/data/stp.svg', + currency: 'São Tomé and Príncipe dobra' + }, + { + name: 'Saudi Arabia', + capital: 'Riyadh', + languages: ['Arabic'], + population: 32248200, + flag: 'https://restcountries.eu/data/sau.svg', + currency: 'Saudi riyal' + }, + { + name: 'Senegal', + capital: 'Dakar', + languages: ['French'], + population: 14799859, + flag: 'https://restcountries.eu/data/sen.svg', + currency: 'West African CFA franc' + }, + { + name: 'Serbia', + capital: 'Belgrade', + languages: ['Serbian'], + population: 7076372, + flag: 'https://restcountries.eu/data/srb.svg', + currency: 'Serbian dinar' + }, + { + name: 'Seychelles', + capital: 'Victoria', + languages: ['French', 'English'], + population: 91400, + flag: 'https://restcountries.eu/data/syc.svg', + currency: 'Seychellois rupee' + }, + { + name: 'Sierra Leone', + capital: 'Freetown', + languages: ['English'], + population: 7075641, + flag: 'https://restcountries.eu/data/sle.svg', + currency: 'Sierra Leonean leone' + }, + { + name: 'Singapore', + capital: 'Singapore', + languages: ['English', 'Malay', 'Tamil', 'Chinese'], + population: 5535000, + flag: 'https://restcountries.eu/data/sgp.svg', + currency: 'Brunei dollar' + }, + { + name: 'Sint Maarten (Dutch part)', + capital: 'Philipsburg', + languages: ['Dutch', 'English'], + population: 38247, + flag: 'https://restcountries.eu/data/sxm.svg', + currency: 'Netherlands Antillean guilder' + }, + { + name: 'Slovakia', + capital: 'Bratislava', + languages: ['Slovak'], + population: 5426252, + flag: 'https://restcountries.eu/data/svk.svg', + currency: 'Euro' + }, + { + name: 'Slovenia', + capital: 'Ljubljana', + languages: ['Slovene'], + population: 2064188, + flag: 'https://restcountries.eu/data/svn.svg', + currency: 'Euro' + }, + { + name: 'Solomon Islands', + capital: 'Honiara', + languages: ['English'], + population: 642000, + flag: 'https://restcountries.eu/data/slb.svg', + currency: 'Solomon Islands dollar' + }, + { + name: 'Somalia', + capital: 'Mogadishu', + languages: ['Somali', 'Arabic'], + population: 11079000, + flag: 'https://restcountries.eu/data/som.svg', + currency: 'Somali shilling' + }, + { + name: 'South Africa', + capital: 'Pretoria', + languages: [ + 'Afrikaans', + 'English', + 'Southern Ndebele', + 'Southern Sotho', + 'Swati', + 'Tswana', + 'Tsonga', + 'Venda', + 'Xhosa', + 'Zulu' + ], + population: 55653654, + flag: 'https://restcountries.eu/data/zaf.svg', + currency: 'South African rand' + }, + { + name: 'South Georgia and the South Sandwich Islands', + capital: 'King Edward Point', + languages: ['English'], + population: 30, + flag: 'https://restcountries.eu/data/sgs.svg', + currency: 'British pound' + }, + { + name: 'Korea (Republic of)', + capital: 'Seoul', + languages: ['Korean'], + population: 50801405, + flag: 'https://restcountries.eu/data/kor.svg', + currency: 'South Korean won' + }, + { + name: 'South Sudan', + capital: 'Juba', + languages: ['English'], + population: 12131000, + flag: 'https://restcountries.eu/data/ssd.svg', + currency: 'South Sudanese pound' + }, + { + name: 'Spain', + capital: 'Madrid', + languages: ['Spanish'], + population: 46438422, + flag: 'https://restcountries.eu/data/esp.svg', + currency: 'Euro' + }, + { + name: 'Sri Lanka', + capital: 'Colombo', + languages: ['Sinhalese', 'Tamil'], + population: 20966000, + flag: 'https://restcountries.eu/data/lka.svg', + currency: 'Sri Lankan rupee' + }, + { + name: 'Sudan', + capital: 'Khartoum', + languages: ['Arabic', 'English'], + population: 39598700, + flag: 'https://restcountries.eu/data/sdn.svg', + currency: 'Sudanese pound' + }, + { + name: 'Suriname', + capital: 'Paramaribo', + languages: ['Dutch'], + population: 541638, + flag: 'https://restcountries.eu/data/sur.svg', + currency: 'Surinamese dollar' + }, + { + name: 'Svalbard and Jan Mayen', + capital: 'Longyearbyen', + languages: ['Norwegian'], + population: 2562, + flag: 'https://restcountries.eu/data/sjm.svg', + currency: 'Norwegian krone' + }, + { + name: 'Swaziland', + capital: 'Lobamba', + languages: ['English', 'Swati'], + population: 1132657, + flag: 'https://restcountries.eu/data/swz.svg', + currency: 'Swazi lilangeni' + }, + { + name: 'Sweden', + capital: 'Stockholm', + languages: ['Swedish'], + population: 9894888, + flag: 'https://restcountries.eu/data/swe.svg', + currency: 'Swedish krona' + }, + { + name: 'Switzerland', + capital: 'Bern', + languages: ['German', 'French', 'Italian'], + population: 8341600, + flag: 'https://restcountries.eu/data/che.svg', + currency: 'Swiss franc' + }, + { + name: 'Syrian Arab Republic', + capital: 'Damascus', + languages: ['Arabic'], + population: 18564000, + flag: 'https://restcountries.eu/data/syr.svg', + currency: 'Syrian pound' + }, + { + name: 'Taiwan', + capital: 'Taipei', + languages: ['Chinese'], + population: 23503349, + flag: 'https://restcountries.eu/data/twn.svg', + currency: 'New Taiwan dollar' + }, + { + name: 'Tajikistan', + capital: 'Dushanbe', + languages: ['Tajik', 'Russian'], + population: 8593600, + flag: 'https://restcountries.eu/data/tjk.svg', + currency: 'Tajikistani somoni' + }, + { + name: 'Tanzania, United Republic of', + capital: 'Dodoma', + languages: ['Swahili', 'English'], + population: 55155000, + flag: 'https://restcountries.eu/data/tza.svg', + currency: 'Tanzanian shilling' + }, + { + name: 'Thailand', + capital: 'Bangkok', + languages: ['Thai'], + population: 65327652, + flag: 'https://restcountries.eu/data/tha.svg', + currency: 'Thai baht' + }, + { + name: 'Timor-Leste', + capital: 'Dili', + languages: ['Portuguese'], + population: 1167242, + flag: 'https://restcountries.eu/data/tls.svg', + currency: 'United States dollar' + }, + { + name: 'Togo', + capital: 'Lomé', + languages: ['French'], + population: 7143000, + flag: 'https://restcountries.eu/data/tgo.svg', + currency: 'West African CFA franc' + }, + { + name: 'Tokelau', + capital: 'Fakaofo', + languages: ['English'], + population: 1411, + flag: 'https://restcountries.eu/data/tkl.svg', + currency: 'New Zealand dollar' + }, + { + name: 'Tonga', + capital: "Nuku'alofa", + languages: ['English', 'Tonga (Tonga Islands)'], + population: 103252, + flag: 'https://restcountries.eu/data/ton.svg', + currency: 'Tongan paʻanga' + }, + { + name: 'Trinidad and Tobago', + capital: 'Port of Spain', + languages: ['English'], + population: 1349667, + flag: 'https://restcountries.eu/data/tto.svg', + currency: 'Trinidad and Tobago dollar' + }, + { + name: 'Tunisia', + capital: 'Tunis', + languages: ['Arabic'], + population: 11154400, + flag: 'https://restcountries.eu/data/tun.svg', + currency: 'Tunisian dinar' + }, + { + name: 'Turkey', + capital: 'Ankara', + languages: ['Turkish'], + population: 78741053, + flag: 'https://restcountries.eu/data/tur.svg', + currency: 'Turkish lira' + }, + { + name: 'Turkmenistan', + capital: 'Ashgabat', + languages: ['Turkmen', 'Russian'], + population: 4751120, + flag: 'https://restcountries.eu/data/tkm.svg', + currency: 'Turkmenistan manat' + }, + { + name: 'Turks and Caicos Islands', + capital: 'Cockburn Town', + languages: ['English'], + population: 31458, + flag: 'https://restcountries.eu/data/tca.svg', + currency: 'United States dollar' + }, + { + name: 'Tuvalu', + capital: 'Funafuti', + languages: ['English'], + population: 10640, + flag: 'https://restcountries.eu/data/tuv.svg', + currency: 'Australian dollar' + }, + { + name: 'Uganda', + capital: 'Kampala', + languages: ['English', 'Swahili'], + population: 33860700, + flag: 'https://restcountries.eu/data/uga.svg', + currency: 'Ugandan shilling' + }, + { + name: 'Ukraine', + capital: 'Kiev', + languages: ['Ukrainian'], + population: 42692393, + flag: 'https://restcountries.eu/data/ukr.svg', + currency: 'Ukrainian hryvnia' + }, + { + name: 'United Arab Emirates', + capital: 'Abu Dhabi', + languages: ['Arabic'], + population: 9856000, + flag: 'https://restcountries.eu/data/are.svg', + currency: 'United Arab Emirates dirham' + }, + { + name: 'United Kingdom of Great Britain and Northern Ireland', + capital: 'London', + languages: ['English'], + population: 65110000, + flag: 'https://restcountries.eu/data/gbr.svg', + currency: 'British pound' + }, + { + name: 'United States of America', + capital: 'Washington, D.C.', + languages: ['English'], + population: 323947000, + flag: 'https://restcountries.eu/data/usa.svg', + currency: 'United States dollar' + }, + { + name: 'Uruguay', + capital: 'Montevideo', + languages: ['Spanish'], + population: 3480222, + flag: 'https://restcountries.eu/data/ury.svg', + currency: 'Uruguayan peso' + }, + { + name: 'Uzbekistan', + capital: 'Tashkent', + languages: ['Uzbek', 'Russian'], + population: 31576400, + flag: 'https://restcountries.eu/data/uzb.svg', + currency: "Uzbekistani so'm" + }, + { + name: 'Vanuatu', + capital: 'Port Vila', + languages: ['Bislama', 'English', 'French'], + population: 277500, + flag: 'https://restcountries.eu/data/vut.svg', + currency: 'Vanuatu vatu' + }, + { + name: 'Venezuela (Bolivarian Republic of)', + capital: 'Caracas', + languages: ['Spanish'], + population: 31028700, + flag: 'https://restcountries.eu/data/ven.svg', + currency: 'Venezuelan bolívar' + }, + { + name: 'Viet Nam', + capital: 'Hanoi', + languages: ['Vietnamese'], + population: 92700000, + flag: 'https://restcountries.eu/data/vnm.svg', + currency: 'Vietnamese đồng' + }, + { + name: 'Wallis and Futuna', + capital: 'Mata-Utu', + languages: ['French'], + population: 11750, + flag: 'https://restcountries.eu/data/wlf.svg', + currency: 'CFP franc' + }, + { + name: 'Western Sahara', + capital: 'El Aaiún', + languages: ['Spanish'], + population: 510713, + flag: 'https://restcountries.eu/data/esh.svg', + currency: 'Moroccan dirham' + }, + { + name: 'Yemen', + capital: "Sana'a", + languages: ['Arabic'], + population: 27478000, + flag: 'https://restcountries.eu/data/yem.svg', + currency: 'Yemeni rial' + }, + { + name: 'Zambia', + capital: 'Lusaka', + languages: ['English'], + population: 15933883, + flag: 'https://restcountries.eu/data/zmb.svg', + currency: 'Zambian kwacha' + }, + { + name: 'Zimbabwe', + capital: 'Harare', + languages: ['English', 'Shona', 'Northern Ndebele'], + population: 14240168, + flag: 'https://restcountries.eu/data/zwe.svg', + currency: 'Botswana pula' + } +] diff --git a/08_Day/08_day_starter/index.html b/08_Day/08_day_starter/index.html new file mode 100644 index 0000000..c677e95 --- /dev/null +++ b/08_Day/08_day_starter/index.html @@ -0,0 +1,17 @@ + + + + + 30DaysOfJavaScript:08 Day + + + +

30DaysOfJavaScript:08 Day

+

Objects

+ + + + + + + \ No newline at end of file diff --git a/08_Day/08_day_starter/scripts/main.js b/08_Day/08_day_starter/scripts/main.js new file mode 100644 index 0000000..c6045c8 --- /dev/null +++ b/08_Day/08_day_starter/scripts/main.js @@ -0,0 +1,2 @@ +console.log(countries) +alert('Open the console and check if the countries has been loaded') \ No newline at end of file From 7bbffa9a1f7dfec1e031908a37054e6027662c7e Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 00:42:07 +0200 Subject: [PATCH 33/54] day 8 --- 07_Day/07_day_functions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index 3fa2e12..ced6759 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -16,7 +16,7 @@
-[<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 8 >>](#) +[<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 8 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/08_Day/08_day_objects.md) ![Thirty Days Of JavaScript](../images/banners/day_1_7.png) @@ -682,4 +682,4 @@ console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gra 🎉 CONGRATULATIONS ! 🎉 -[<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 8 >>](#) +[<< Day 6](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/06_Day/06_day_loops.md) | [Day 8 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/08_Day/08_day_objects.md) From 7df4d43a3ac92808e5bbcea6c22b3ca730c22674 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 00:43:14 +0200 Subject: [PATCH 34/54] day 8 --- 08_Day/08_day_objects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index d8a258f..18e36ec 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -19,7 +19,7 @@ [<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/09_Day/09_day_function_programming.md) | [Day 9 >>](#) -![Thirty Days Of JavaScript](../images/banners/day_1_7.png) +![Thirty Days Of JavaScript](../images/banners/day_1_8.png) - [Day 8](#day-8) - [Scope](#scope) From f8863c5dce7f60f6a5a68c9bd55fcb0141fad911 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 00:50:30 +0200 Subject: [PATCH 35/54] day 8 --- 07_Day/07_day_functions.md | 2 +- 08_Day/08_day_objects.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index ced6759..fb4850e 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -505,7 +505,7 @@ console.log('Weight of an object in Newton: ', weightOfObject(100, 1.62)) // gra ### Function declaration versus Arrow function -🌕 You are a rising stat, now you knew function . Now, you are super charged with the power of functions. You have just completed day 6 challenges and you are 6 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. +🌕 You are a rising star, now you knew function . Now, you are super charged with the power of functions. You have just completed day 7 challenges and you are 7 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. ## 💻 Exercises diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index 18e36ec..a8660f0 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -417,6 +417,8 @@ console.log(copyPerson.hasOwnProperty('name')) console.log(copyPerson.hasOwnProperty('score')) ``` +🌕 You are astonishing. Now, you are super charged with the power of objects. You have just completed day 7 challenges and you are 7 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. + ## 💻 Exercises 1. Create an empty object called dog From 6e2f81bcfb90a17fbe9b064b05754e6723c16f6c Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 01:04:10 +0200 Subject: [PATCH 36/54] day 8 --- 08_Day/08_day_objects.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index a8660f0..1c767ed 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -168,11 +168,11 @@ for(let i = 0; i < 3; i++){ ``` -The scope *let* and *const* is the same. The difference is only reassigning. We can not change or reassign the value of const variable. +The scope *let* and *const* is the same. The difference is only reassigning. We can not change or reassign the value of const variable. I would strongly suggest you to use *let* and *const*, by using *let* and *const* you will writ clean code and avoid hard to debug mistakes. As a rule of thumb, you can use *let* for any value which change, *const* for any constant value, array, object, arrow function and function expression. ## 📔 Object -Everything can be an object and objects do have properties and properties have values. +Everything can be an object and objects do have properties and properties have values, so an object is key value pair. The order of the key is not reserved, or there is no order. Creating an object literal. To create an object literal, we use two curly brackets. ### Creating an empty object @@ -357,9 +357,10 @@ _Object.assign_: To copy an object without modifying the original object ```js const person = { - name: 'Asabeneh', - age: 200, + firstName: 'Asabeneh', + age: 250, country: 'Finland', + city:'Helsinki', skills: ['HTML', 'CSS', 'JS'], title: 'teacher', address: { @@ -368,7 +369,7 @@ const person = { city: 'Helsinki' }, getPersonInfo: function() { - return `I am ${this.name} and I live in ${this.country}. I am ${this.age}.` + return `I am ${this.firstName} and I live in ${city}, ${this.country}. I am ${this.age}.` } } From 93bbcb7f779fd7e9cdcf76db5292c96f85e472ef Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 01:15:28 +0200 Subject: [PATCH 37/54] day 8 --- .../data/{countries_obj.js => countries_data.js} | 0 08_Day/08_day_starter/index.html | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename 08_Day/08_day_starter/data/{countries_obj.js => countries_data.js} (100%) diff --git a/08_Day/08_day_starter/data/countries_obj.js b/08_Day/08_day_starter/data/countries_data.js similarity index 100% rename from 08_Day/08_day_starter/data/countries_obj.js rename to 08_Day/08_day_starter/data/countries_data.js diff --git a/08_Day/08_day_starter/index.html b/08_Day/08_day_starter/index.html index c677e95..fbe7e81 100644 --- a/08_Day/08_day_starter/index.html +++ b/08_Day/08_day_starter/index.html @@ -8,8 +8,8 @@

30DaysOfJavaScript:08 Day

Objects

- - + + From 271fd5870fa6d20ea2e6c0878f62825a043a05e9 Mon Sep 17 00:00:00 2001 From: Meharban Singh Date: Wed, 8 Jan 2020 20:48:59 -0500 Subject: [PATCH 38/54] Exercises link work --- 08_Day/08_day_objects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index 1c767ed..6cbfbda 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -37,7 +37,7 @@ - [Getting object values using Object.values()](#getting-object-values-using-objectvalues) - [Getting object keys and values using Object.entries()](#getting-object-keys-and-values-using-objectentries) - [Checking properties using hasOwnProperty()](#checking-properties-using-hasownproperty) - - [💻 Exercises](#%f0%9f%92%bb-exercises) + - [💻 Exercises](#-exercises) # Day 8 From 6bae6ef2702ff54ddab68677a271dc9178dbe2b7 Mon Sep 17 00:00:00 2001 From: Meharban Singh Date: Wed, 8 Jan 2020 20:50:45 -0500 Subject: [PATCH 39/54] Exercise link works --- 08_Day/08_day_objects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index 1c767ed..6cbfbda 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -37,7 +37,7 @@ - [Getting object values using Object.values()](#getting-object-values-using-objectvalues) - [Getting object keys and values using Object.entries()](#getting-object-keys-and-values-using-objectentries) - [Checking properties using hasOwnProperty()](#checking-properties-using-hasownproperty) - - [💻 Exercises](#%f0%9f%92%bb-exercises) + - [💻 Exercises](#-exercises) # Day 8 From 05ef7c00a955bd9908ea98a2d168d68137987eaa Mon Sep 17 00:00:00 2001 From: Meharban Singh Date: Wed, 8 Jan 2020 20:56:42 -0500 Subject: [PATCH 40/54] Update 07_day_functions.md --- 07_Day/07_day_functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/07_Day/07_day_functions.md b/07_Day/07_day_functions.md index fb4850e..00061f3 100644 --- a/07_Day/07_day_functions.md +++ b/07_Day/07_day_functions.md @@ -37,7 +37,7 @@ - [Arrow Function](#arrow-function) - [Function with default parameters](#function-with-default-parameters) - [Function declaration versus Arrow function](#function-declaration-versus-arrow-function) - - [💻 Exercises](#%f0%9f%92%bb-exercises) + - [💻 Exercises](#-exercises) # 📔 Day 7 From df8b294da3135a5d879ba8fb665b5b4995925d11 Mon Sep 17 00:00:00 2001 From: Meharban Singh Date: Wed, 8 Jan 2020 20:58:21 -0500 Subject: [PATCH 41/54] Update 08_day_objects.md --- 08_Day/08_day_objects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index 6cbfbda..fdc47d9 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -26,7 +26,7 @@ - [Window Scope](#window-scope) - [Global scope](#global-scope) - [Local scope](#local-scope) - - [📔 Object](#%f0%9f%93%94-object) + - [📔 Object](#-object) - [Creating an empty object](#creating-an-empty-object) - [Creating an objecting with values](#creating-an-objecting-with-values) - [Getting values from an object](#getting-values-from-an-object) From 5d8d3e3a40c2d6c2ad3dc270b282f4ae920590bd Mon Sep 17 00:00:00 2001 From: Meharban Singh Date: Wed, 8 Jan 2020 20:59:37 -0500 Subject: [PATCH 42/54] Update 06_day_loops.md --- 06_Day/06_day_loops.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Day/06_day_loops.md b/06_Day/06_day_loops.md index 9eab981..df16896 100644 --- a/06_Day/06_day_loops.md +++ b/06_Day/06_day_loops.md @@ -28,7 +28,7 @@ - [for of loop](#for-of-loop) - [break](#break) - [continue](#continue) - - [💻 Exercises:Day 6](#%f0%9f%92%bb-exercisesday-6) + - [💻 Exercises:Day 6](#-exercisesday-6) # 📔 Day 6 From 1a89e1203cb9c5425c8269cfb3bec4e1e3974487 Mon Sep 17 00:00:00 2001 From: Meharban Singh Date: Wed, 8 Jan 2020 21:00:37 -0500 Subject: [PATCH 43/54] Update 05_day_arrays.md --- 05_Day/05_day_arrays.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index c1a795f..40ac75c 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -20,7 +20,7 @@ ![Day 5](../images/banners/day_1_5.png) -- [📔 Day 5](#%f0%9f%93%94-day-5) +- [📔 Day 5](#-day-5) - [Arrays](#arrays) - [How to create an empty array](#how-to-create-an-empty-array) - [How to create an array with values](#how-to-create-an-array-with-values) @@ -46,7 +46,7 @@ - [Reversing array order](#reversing-array-order) - [Sorting elements in array](#sorting-elements-in-array) - [Array of arrays](#array-of-arrays) - - [💻 Exercise](#%f0%9f%92%bb-exercise) + - [💻 Exercise](#-exercise) # 📔 Day 5 From 0a05493ded07f6022a4a7e31b3971056f42be9ff Mon Sep 17 00:00:00 2001 From: Meharban Singh Date: Wed, 8 Jan 2020 21:01:05 -0500 Subject: [PATCH 44/54] Update 04_day_conditionals.md --- 04_Day/04_day_conditionals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/04_Day/04_day_conditionals.md b/04_Day/04_day_conditionals.md index 37bfab0..98725d5 100644 --- a/04_Day/04_day_conditionals.md +++ b/04_Day/04_day_conditionals.md @@ -27,7 +27,7 @@ - [if else if else](#if-else-if-else) - [Switch](#switch) - [Ternary Operators](#ternary-operators) -- [💻 Exercise : Conditionals](#%f0%9f%92%bb-exercise--conditionals) +- [💻 Exercise : Conditionals](#-exercise--conditionals) # 📔 Day 4 @@ -345,4 +345,4 @@ isRaining 🎉 CONGRATULATIONS ! 🎉 -[<< Day 3](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) | [Day 5 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) \ No newline at end of file +[<< Day 3](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) | [Day 5 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/05_Day/05_day_arrays.md) From b09f379c44364b33b5f59e4f37384c84d69c9a9e Mon Sep 17 00:00:00 2001 From: Meharban Singh Date: Wed, 8 Jan 2020 21:01:45 -0500 Subject: [PATCH 45/54] Update 03_booleans_operators_date.md --- 03_Day/03_booleans_operators_date.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 6b1dc96..f3ee5fc 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -49,7 +49,7 @@ - [Getting minutes](#getting-minutes) - [Getting seconds](#getting-seconds) - [Getting time](#getting-time) -- [💻 Day 3: Exercises](#%f0%9f%92%bb-day-3-exercises) +- [💻 Day 3: Exercises](#-day-3-exercises) - [1. Exercises: Data types Part](#1-exercises-data-types-part) - [2. Exercises: Arithmetic Operators Part](#2-exercises-arithmetic-operators-part) - [3. Exercises: Booleans Part](#3-exercises-booleans-part) From 6ce81ed891de69f62dd7ce30256bc1e301f5bea3 Mon Sep 17 00:00:00 2001 From: Meharban Singh Date: Wed, 8 Jan 2020 21:02:22 -0500 Subject: [PATCH 46/54] Update 02_day_data_types.md --- 02_Day/02_day_data_types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 97a118a..79c2d86 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -41,7 +41,7 @@ - [String to Int](#string-to-int) - [String to Float](#string-to-float) - [Float to Int](#float-to-int) -- [💻 Day 2: Exercises](#%f0%9f%92%bb-day-2-exercises) +- [💻 Day 2: Exercises](#-day-2-exercises) # 📔 Day 2 From e6b77d5adfca7c7f6d777fff3e819fa5bd53afc2 Mon Sep 17 00:00:00 2001 From: Meharban Singh Date: Wed, 8 Jan 2020 21:03:24 -0500 Subject: [PATCH 47/54] Update readMe.md --- readMe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readMe.md b/readMe.md index f2fa068..f3dbaea 100644 --- a/readMe.md +++ b/readMe.md @@ -51,7 +51,7 @@ - [Checking Data types](#checking-data-types) - [Comments](#comments) - [Variables](#variables) -- [💻 Day 1: Exercises](#%f0%9f%92%bb-day-1-exercises) +- [💻 Day 1: Exercises](#-day-1-exercises) # 📔Day 1 From e7a2adc9475a07a45fe6ef298d6d88176693ceb3 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 14:43:40 +0200 Subject: [PATCH 48/54] day 8 fixes --- 08_Day/08_day_objects.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index fdc47d9..069fbcd 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -26,7 +26,7 @@ - [Window Scope](#window-scope) - [Global scope](#global-scope) - [Local scope](#local-scope) - - [📔 Object](#-object) + - [📔 Object](#%f0%9f%93%94-object) - [Creating an empty object](#creating-an-empty-object) - [Creating an objecting with values](#creating-an-objecting-with-values) - [Getting values from an object](#getting-values-from-an-object) @@ -37,7 +37,7 @@ - [Getting object values using Object.values()](#getting-object-values-using-objectvalues) - [Getting object keys and values using Object.entries()](#getting-object-keys-and-values-using-objectentries) - [Checking properties using hasOwnProperty()](#checking-properties-using-hasownproperty) - - [💻 Exercises](#-exercises) + - [💻 Exercises](#%f0%9f%92%bb-exercises) # Day 8 @@ -113,7 +113,7 @@ function letsLearnScope() { console.log(a, b, c) // Python 20 30 } // we can not access c because c's scope is only the if block - console.log(a, b) + console.log(a, b) // JavaScript 10 } letsLearnScope() console.log(a, b) // JavaScript 10, accessible From f434534ec49554f8e83ec061935fa62dfccc9e60 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 23:22:04 +0200 Subject: [PATCH 49/54] day 9 --- .gitignore | 1 - 05_Day/05_day_arrays.md | 18 +- 08_Day/08_day_objects.md | 94 +- 09_Day/09_day_higher_order_functions.md | 583 +++++ 09_Day/09_day_starter/data/countries_data.js | 2013 ++++++++++++++++++ 09_Day/09_day_starter/index.html | 17 + 09_Day/09_day_starter/scripts/main.js | 2 + 7 files changed, 2632 insertions(+), 96 deletions(-) create mode 100644 09_Day/09_day_higher_order_functions.md create mode 100644 09_Day/09_day_starter/data/countries_data.js create mode 100644 09_Day/09_day_starter/index.html create mode 100644 09_Day/09_day_starter/scripts/main.js diff --git a/.gitignore b/.gitignore index 5eb48b4..4aa296c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,6 @@ day9.md day10.md 01_02_03_days_backup.md test.md -09_Day 10_Day 11_Day 12_Day diff --git a/05_Day/05_day_arrays.md b/05_Day/05_day_arrays.md index 40ac75c..d0f52f9 100644 --- a/05_Day/05_day_arrays.md +++ b/05_Day/05_day_arrays.md @@ -20,7 +20,7 @@ ![Day 5](../images/banners/day_1_5.png) -- [📔 Day 5](#-day-5) +- [📔 Day 5](#%f0%9f%93%94-day-5) - [Arrays](#arrays) - [How to create an empty array](#how-to-create-an-empty-array) - [How to create an array with values](#how-to-create-an-array-with-values) @@ -46,7 +46,7 @@ - [Reversing array order](#reversing-array-order) - [Sorting elements in array](#sorting-elements-in-array) - [Array of arrays](#array-of-arrays) - - [💻 Exercise](#-exercise) + - [💻 Exercise](#%f0%9f%92%bb-exercise) # 📔 Day 5 @@ -520,12 +520,20 @@ Slice: To cut out a multiple items in range. It takes two parameters:starting an Splice: It takes three parameters:Starting position, number of times to be removed and number of items to be added. ```js - const numbers = [1, 2, 3, 4, 5]; + const numbers = [1, 2, 3, 4, 5] console.log(numbers.splice()) // -> remove all items + +``` + +```js + const numbers = [1, 2, 3, 4, 5] console.log(numbers.splice(0,1)) // remove the first item - console.log(numbers.splice(3, 3, 6, 7, 8)) // -> [1,2,6,7,8] //it removes two item and replace three items +``` +```js + const numbers = [1, 2, 3, 4, 5]; + console.log(numbers.splice(3, 3, 6, 7, 8)) // -> [1, 2, 3, 6, 7, 8] //it removes two item and replace three items ``` #### Adding item to an array using push @@ -563,7 +571,7 @@ console.log(fruits) // ['banana', 'orange', 'mango', 'lemon', 'apple', 'lime'] #### Removing the end element using pop -Pop: Removing item in the end. +pop: Removing item in the end. ```js const numbers = [1, 2, 3, 4, 5] diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index 069fbcd..4df3dcd 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -17,11 +17,11 @@
-[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/09_Day/09_day_function_programming.md) | [Day 9 >>](#) +[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) | [Day 9 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_higher_order_function.md) ![Thirty Days Of JavaScript](../images/banners/day_1_8.png) -- [Day 8](#day-8) +- [📔 Day 8](#%f0%9f%93%94-day-8) - [Scope](#scope) - [Window Scope](#window-scope) - [Global scope](#global-scope) @@ -39,7 +39,7 @@ - [Checking properties using hasOwnProperty()](#checking-properties-using-hasownproperty) - [💻 Exercises](#%f0%9f%92%bb-exercises) -# Day 8 +# 📔 Day 8 ## Scope @@ -490,94 +490,8 @@ console.log(copyPerson.hasOwnProperty('score')) 1. Get all keys or properties of users object 1. Get all the values of users object 1. Use the countries object to print a country name, capital, populations and languages. -1. \*\*\* Find the 10 most spoken languages: - ````js - // Your output should look like this - console.log(mostSpokenLanguages(countries, 10)) - [(91, 'English'), - (45, 'French'), - (25, 'Arabic'), - (24, 'Spanish'), - (9, 'Russian'), - (9, 'Portuguese'), - (8, 'Dutch'), - (7, 'German'), - (5, 'Chinese'), - (4, 'Swahili'), - (4, 'Serbian')] - - // Your output should look like this - console.log(mostSpokenLanguages(countries, 3)) - [ - (91, 'English'), - (45, 'French'), - (25, 'Arabic') - ]``` - - ```` - -1. \*\*\* Use countries_data.js file create a function which create the ten most populated countries - - ````js - console.log(mostPopulatedCountries(countries, 10)) - - [ - {country: 'China', population: 1377422166}, - {country: 'India', population: 1295210000}, - {country: 'United States of America', population: 323947000}, - {country: 'Indonesia', population: 258705000}, - {country: 'Brazil', population: 206135893}, - {country: 'Pakistan', population: 194125062}, - {country: 'Nigeria', population: 186988000}, - {country: 'Bangladesh', population: 161006790}, - {country: 'Russian Federation', population: 146599183}, - {country: 'Japan', population: 126960000} - ] - - console.log(mostPopulatedCountries(countries, 3)) - [ - {country: 'China', population: 1377422166}, - {country: 'India', population: 1295210000}, - {country: 'United States of America', population: 323947000} - ]``` - - ```` - -1. \*\*\* Try to develop a program which calculate measure of central tendency of a sample(mean, median, mode) and measure of variability(range, variance, standard deviation). In addition to those measures find the min, max, count, percentile, and frequency distribution of the sample. You can create an object called statistics and create all the functions which do statistical calculations as method for the statistics object. Check the output below. - - ```js - const ages = [31, 26, 34, 37, 27, 26, 32, 32, 26, 27, 27, 24, 32, 33, 27, 25, 26, 38, 37, 31, 34, 24, 33, 29, 26] - - console.log('Count:', statistics.count()) // 25 - console.log('Sum: ', statistics.sum()) // 744 - console.log('Min: ', statistics.min()) // 24 - console.log('Max: ', statistics.max()) // 38 - console.log('Range: ', statistics.range() // 14 - console.log('Mean: ', statistics.mean()) // 30 - console.log('Median: ',statistics.median()) // 29 - console.log('Mode: ', statistics.mode()) // {'mode': 26, 'count': 5} - console.log('Variance: ',statistics.var()) // 17.5 - console.log('Standard Deviation: ', statistics.std()) // 4.2 - console.log('Variance: ',statistics.var()) // 17.5 - console.log('Frequency Distribution: ',statistics.freqDist()) # [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] - ``` - - ```sh - console.log(statistics.describe()) - Count: 25 - Sum: 744 - Min: 24 - Max: 38 - Range: 14 - Mean: 30 - Median: 29 - Mode: (26, 5) - Variance: 17.5 - Standard Deviation: 4.2 - Frequency Distribution: [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] - ``` 🎉 CONGRATULATIONS ! 🎉 -[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/09_Day/09_day_function_programming.md) | [Day 9 >>](#) +[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) | [Day 9 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_higher_order_function.md) diff --git a/09_Day/09_day_higher_order_functions.md b/09_Day/09_day_higher_order_functions.md new file mode 100644 index 0000000..217d153 --- /dev/null +++ b/09_Day/09_day_higher_order_functions.md @@ -0,0 +1,583 @@ +
+

30 Days Of JavaScript

+ + GitHub stars + + + + + + Twitter Follow + + +Author: +Asabeneh Yetayeh
+ January, 2020 +
+ +
+ +[<< Day 8](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/08_Day/08_day_objects.md) | [Day 10 >>](#) +- [Day 9](#day-9) + - [Higher Order Function](#higher-order-function) + - [Callback](#callback) + - [Returning function](#returning-function) + - [setTime](#settime) + - [setInterval](#setinterval) + - [setTimeout](#settimeout) + - [Functional Programming](#functional-programming) + - [forEach](#foreach) + - [map](#map) + - [filter](#filter) + - [reduce](#reduce) + - [every](#every) + - [find](#find) + - [some](#some) + - [findIndex](#findindex) + - [sort](#sort) + - [Sorting string values](#sorting-string-values) + - [Sorting Numeric values](#sorting-numeric-values) + - [Sorting Object Arrays](#sorting-object-arrays) + - [💻 Exercises](#%f0%9f%92%bb-exercises) +# Day 9 + +## Higher Order Function + +Higher order functions are functions which take other function as a parameter or return a function as a value. The function passed as a parameter is called callback. + +### Callback + +A callback is a function which can be passed as parameter to other function. See the example below. + +```js +// a callback function, the function could be any name +const callBack = (n) => { + return n ** 2 +} +​ +// function take other function as a callback +function cube(callback, n) { + return callback(n) * n +} +​ +console.log(cube(square, 3)) +``` + +### Returning function + +Higher order functions return function as a value +​ +```js +// Higher order function returning an other function +const higherOrder = n => { + const doSomething = m => { + const doWhatEver = t => { + return 2 * n + 3 * m + t + } + return doWhatEver + } +​ + return doSomething +} +console.log(higherOrder(2)(3)(10)) +``` + +Let us see were we use call back functions.For instance the *forEach* method uses call back. + +```js +const numbers = [1, 2, 3, 4] +​ +const sumArray = arr => { + let sum = 0 + const callBack = function(element) { + sum += element + } + numbers.forEach(callback) + return sum + +} +console.log(sumArray(numbers)) +``` + +The above example can be simplified as follows: + +```js +const numbers = [1, 2, 3, 4] +​ +const sumArray = arr => { + let sum = 0 + numbers.forEach(function(element) { + sum += element + }) + return sum + +} +console.log(sumArray(numbers)) +``` + +### setTime + +#### setInterval + +In JavaScript, we use setInterval higher order function to do some activity continuously with in some interval of time. The setInterval global method take a callback function and a duration as a parameter. The duration is in milliseconds and the callback will be always called in that interval of time. + +```js +// syntax +function callBack () { + // code goes here +} +setInterval(callback, duration) +``` + +```js + +function sayHello () { + console.log('Hello') +} +setInterval(sayHello, 2000) // it prints hello in every 2 seconds +``` + +#### setTimeout + +In JavaScript, we use setTimeout higher order function to execute some action at some time in the future. The setTimeout global method take a callback function and a duration as a parameter. The duration is in milliseconds and the callback wait for that amount of time. + +```js +// syntax +function callBack () { + // code goes here +} +setTimeout(callback, duration) // duration in milliseconds +``` + +```js + +function sayHello () { + console.log('Hello') +} +setTimeout(sayHello, 2000) // it prints hello after it waits for 2 seconds. +``` + +## Functional Programming + +Instead of writing regular loop, latest version of JavaScript introduced lots of built in methods which can help us to solve complicated problems. All builtin methods take callback function. In this section, we will see *forEach*, *map*, *filter*, *reduce*, *find*, *every*, *some*, and *sort*. + +### forEach + +*forEach*: Iterate an array elements. We use *forEach* only with arrays. It takes a callback function with elements, index parameter and array itself. The index and the array optional. + +```js +arr.forEach(function(element, index, arr){ + console.log(index, element, arr) +}) +// The above code can be written using arrow function +arr.forEach((element, index, arr) => { + console.log(index, element, arr) +}) +// The above code can be written using arrow function and explicit return +arr.forEach((element, index, arr) => console.log(index, element, arr)) +``` + +```js +let sum = 0; +const numbers = [1,2,3,4,5]; +numbers.forEach(num => sum += num)) +// 15 +``` + +```js +const countries = ['Finland', 'Denmark', 'Sweden', 'Norway', 'Iceland'] +countries.forEach(element => console.log(element.toUpperCase())) +``` + +```sh +FINLAND +DENMARK +SWEDEN +NORWAY +ICELAND +``` + +### map + +*map*: Iterate an array elements and modify the array elements. It takes a callback function with elements and index parameter and return the modified array. + +```js +const modifiedArray = arr.map(function(element, index){ + return element +}) +``` + +```js +/*Arrow function and explicit return +const modifiedArray = arr.map((element,index) => element); +*/ +//Example +const numbers = [1,2,3,4,5] +const numbersSquare = numbers.map((num) => num * num) +console.log(numbersSquare) // [1,4,9,16,25] +``` + +```js +const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook'] +const namesToUpperCase = names.map((name) => name.toUpperCase()) +console.log(namesToUpperCase) //['ASABENEH', 'MATHIAS', 'ELIAS', 'BROOK'] +``` + +```js +const countries = [ + 'Albania', + 'Bolivia', + 'Canada', + 'Denmark', + 'Ethiopia', + 'Finland', + 'Germany', + 'Hungary', + 'Ireland', + 'Japan', + 'Kenya' +] +const countriesToUpperCase = countries.map(function(country){ + let countryCode = country.toUpperCase().slice(0, 3) + let country = country.length + return [] +}) +console.log(countriesToUpperCase) +// ['ALBANIA', 'BOLIVIA', 'CANADA', 'DENMARK', 'ETHIOPIA', 'FINLAND', 'GERMANY', 'HUNGARY', 'IRELAND', 'JAPAN', 'KENYA'] +/* +// Arrow function +const countriesToUpperCase = countries.map((country) => { + return country.toUpperCase(); +}) +//Explicit return arrow function +const countriesToUpperCase = countries.map(country => country.toUpperCase()); +*/ + +``` + +### filter + +*Filter*: Filter out items which full fill filtering conditions + +```js +//Filter countries containing land +const countriesContainingLand = countries.filter(country => country.includes('land')); +console.log(countriesContainingLand ) //['Finland', 'Ireland'] + +const countriesEndsByia = countries.filter(country => country.includes('ia')); +console.log(countriesEndsByia) //['Albania', 'Bolivia','Ethiopia'] + +const countriesHaveFiveLetters = countries.filter(country => country.length === 5); +console.log(countriesHaveFiveLetters ) //  ['Japan', 'Kenya'] + +const scores = [ + { name: 'Asabeneh', score: 95 }, + { name: 'Mathias', score: 80 }, + { name: 'Elias', score: 50 }, + { name: 'Martha', score: 85 }, + { name: 'John', score: 100 } +] + +const scoresGreaterEight = scores.filter((score) => score.score > 80) +console.log(scoresGreaterEight) //[{name: 'Asabeneh', score: 95}, {name: 'Martha', score: 85},{name: 'John', score: 100}] +``` + +### reduce + +*reduce*: Reduce takes a callback function. The call back function takes accumulator and current value as a parameter and returns a single value: + +```js + const numbers = [1,2,3,4,5]; + const sum = numbers.reduce((accum, curr)=> accum + curr) + + console.log(sum) //15 +``` + +### every + +*every*: Check if all the elements are similar in one aspect. It returns boolean + +```js +const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook'] +const areAllStr = names.every((name) => typeof name ==='string'); +console.log(arrAllStr) // true; +``` + +```js +const areAllTrue = [true, true, true, true] +const areAllTrue = bools.every((b)=> { + return b === true; +}) + +console.log(areAllTrue) //true +``` + +### find + +*find*: Return the first element which satisfies the condition + +```js + +const ages = [24, 22,25,32,35,18]; +const age = ages.find((age) => age < 20) +console.log(age) // 18 +``` + +```js +const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook'] +const result = names.find(name => name.length > 7) +console.log(result) // Asabeneh + +``` + +```js +const scores = [ + { name: 'Asabeneh', score: 95 }, + { name: 'Mathias', score: 80 }, + { name: 'Elias', score: 50 }, + { name: 'Martha', score: 85 }, + { name: 'John', score: 100 } +] + +const score = scores.find((user) => { + return user.score > 80 +}) +``` + +### some + +*some*: Check if some of the elements are similar in one aspect. It returns boolean + +```js +const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook'] +const bools = [true, true, true, true] + +const areSomeTrue = bools.some((b)=> { + return b === true; +}) + +console.log(areSomeTrue) //true +``` + +```js +const areAllStr = names.some((name) => typeof name ==='number'); +console.log(areAllStr ) // false +``` + +### findIndex + +*findIndex*: Return the position of the first element which satisfies the condition + +```js +const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook'] +const ages = [24, 22,25,32,35,18] + +const result = names.findIndex(name => name.length > 7) +console.log(result) // 0 + +const age = ages.findIndex((age) => age < 20) +console.log(age) // 5 +``` + +### sort + +*sort*: The sort methods arranges the array elements either ascending or descending order. By default, the ***sort()*** method sorts values as strings.This works well for string array items but not for numbers. If number values are sorted as strings and it give us wrong result. Sort method modify the original array. It is recommended to copy the original document before you start sorting. + +#### Sorting string values + +```js +const products = ['Milk', 'Coffee', 'Sugar', 'Honey', 'Apple', 'Carrot'] +console.log(products.sort()) // ['Apple', 'Carrot', 'Coffee', 'Honey', 'Milk', 'Sugar'] +//Now the original products array is also sorted +``` + +#### Sorting Numeric values + +As you can see in the example below, 100 came first after sorted in ascending order. Sort converts items to string , since '100' and other numbers compared, 1 which the beginning of the string '100' became the smallest. To avoid this, we use a compare call back function inside the sort method, which return a negative, zero or positive. + +```js +const numbers = [9.81, 3.14, 100, 37] +// Using sort method to sort number items provide a wrong result. see below +console.log(numbers.sort()) //[100, 3.14, 37, 9.81] +numbers.sort(function(a, b) { +return a - b +}) + +console.log(numbers) // [3.14, 9.81, 37, 100] +numbers.sort(function(a, b) { +return b - a +}) +console.log(numbers) //[100, 37, 9.81, 3.14] +``` + +#### Sorting Object Arrays + +When ever we sort objects in an array. We use the object key to compare. Lets see the example below. + +```js +objArr.sort(function(a, b) { + if (a.key < b.key) return -1 + if (a.key > b.key) return 1 + return 0; +}) + +// or + +objArr.sort(function(a, b) { + if (a['key'] < b['key']) return -1; + if (a['key'] > b['key']) return 1; + return 0; +}) + +const users = [{name:'Asabeneh', age:150}, {name:'Brook', age:50}, {name:'Eyo', age:100},{name:'Elias', age:22}]; +users.sort((a, b) => { + if (a.age < b.age) return -1; + if (a.age > b.age) return 1; + return 0; +}); +console.log(users); // sorted ascending +//[{…}, {…}, {…}, {…}] +``` +🌕 You are doing great.Never give up because great things take time. You have just completed day 9 challenges and you are 9 steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. + +## 💻 Exercises + +```js + const countries = ['Finland', 'Sweden', 'Denmark', 'Norway', 'IceLand']; + const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook']; + const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + const products = [ + { product: 'banana', price: 3 }, + { product: 'mango', price: 6 }, + { product: 'potato', price: ' ' }, + { product: 'avocado', price: 8 }, + { product: 'coffee', price: 10 }, + { product: 'tea', price: '' } +] +``` + +1. Explain the difference between ***forEach, map, filter, and reduce***. +2. Define a call function before you them in forEach, map, filter or reduce. +3. Use ***forEach*** to console.log each country in the countries array. +4. Use ***forEach*** to console.log each name in the names array. +5. Use ***forEach*** to console.log each number in the numbers array. +6. Use ***map*** to create a new array by changing each country to uppercase in the countries array. +7. Use ***map*** to create an array of countries length from countries array. +8. Use ***map*** to create a new array by changing each number to square in the numbers array +9. Use ***map*** to change to each name to uppercase in the names array +10. Use ***map*** to map the products array to its corresponding prices. +11. Use ***filter*** to filter out countries containing ***land***. +12. Use ***filter*** to filter out countries having six character. +13. Use ***filter*** to filter out countries containing six letters and more in the country array. +14. Use ***filter*** to filter out country start with 'E'; +15. Use ***filter*** to filter out only prices with values. +16. Find the total price of products by chaining two or more array iterators(eg. arr.map(callback).filter(callback).reduce(callback)) +17. Find the sum of price of products using only reduce reduce(callback)) +18. Declare a function called getStringLists which takes an array as a parameter and then returns an array only with string items. +19. Use ***reduce*** to sum all the numbers in the numbers array. +20. Use ***reduce*** to concatenate all the countries and to produce this sentence: ***Estonia, Finland, Sweden, Denmark, Norway, and IceLand are north European countries*** +21. Explain the difference between ***some*** and ***every*** +22. Use ***some*** to check if some names' length greater than seven in names array +23. Use ***every*** to check if all the countries contain the word land +24. Explain the difference between ***find*** and ***findIndex***. +25. Use ***find*** to find the first country containing only six letters in the countries array +26. Use ***findIndex*** to find the position of the first country containing only six letters in the countries array +27. Use ***findIndex*** to find the position of ***Norway*** if it doesn't exist in the array you will get -1. +28. Use ***findIndex*** to find the position of ***Russia*** if it doesn't exist in the array you will get -1. +29. Declare a function called ***categorizeCountries*** which returns an array of countries which have some common pattern(you find the countries array in this repository as countries.js(eg 'land', 'ia', 'island','stan')). +30. Create a function which return an array of objects, which is the letter and the number of times the letter use to start with a name of a country. +31. Declare a ***getFirstTenCountries*** function and return an array of ten countries. Use different functional programming to work on the countries.js array +32. Declare a ***getLastTenCountries*** function which which returns the last ten countries in the countries array. +33. Find out which *letter* is used many *times* as initial for a country name from the countries array (eg. Finland, Fiji, France etc) +34. Use the countries information, in the data folder. Sort countries by name, by capital, by population +35. \*\*\* Find the 10 most spoken languages: + + ````js + // Your output should look like this + console.log(mostSpokenLanguages(countries, 10)) + [(91, 'English'), + (45, 'French'), + (25, 'Arabic'), + (24, 'Spanish'), + (9, 'Russian'), + (9, 'Portuguese'), + (8, 'Dutch'), + (7, 'German'), + (5, 'Chinese'), + (4, 'Swahili'), + (4, 'Serbian')] + + // Your output should look like this + console.log(mostSpokenLanguages(countries, 3)) + [ + (91, 'English'), + (45, 'French'), + (25, 'Arabic') + ] + ``` + + +36. \*\*\* Use countries_data.js file create a function which create the ten most populated countries + + ````js + console.log(mostPopulatedCountries(countries, 10)) + + [ + {country: 'China', population: 1377422166}, + {country: 'India', population: 1295210000}, + {country: 'United States of America', population: 323947000}, + {country: 'Indonesia', population: 258705000}, + {country: 'Brazil', population: 206135893}, + {country: 'Pakistan', population: 194125062}, + {country: 'Nigeria', population: 186988000}, + {country: 'Bangladesh', population: 161006790}, + {country: 'Russian Federation', population: 146599183}, + {country: 'Japan', population: 126960000} + ] + + console.log(mostPopulatedCountries(countries, 3)) + [ + {country: 'China', population: 1377422166}, + {country: 'India', population: 1295210000}, + {country: 'United States of America', population: 323947000} + ]``` + + ```` + +37. \*\*\* Try to develop a program which calculate measure of central tendency of a sample(mean, median, mode) and measure of variability(range, variance, standard deviation). In addition to those measures find the min, max, count, percentile, and frequency distribution of the sample. You can create an object called statistics and create all the functions which do statistical calculations as method for the statistics object. Check the output below. + + ```js + const ages = [31, 26, 34, 37, 27, 26, 32, 32, 26, 27, 27, 24, 32, 33, 27, 25, 26, 38, 37, 31, 34, 24, 33, 29, 26] + + console.log('Count:', statistics.count()) // 25 + console.log('Sum: ', statistics.sum()) // 744 + console.log('Min: ', statistics.min()) // 24 + console.log('Max: ', statistics.max()) // 38 + console.log('Range: ', statistics.range() // 14 + console.log('Mean: ', statistics.mean()) // 30 + console.log('Median: ',statistics.median()) // 29 + console.log('Mode: ', statistics.mode()) // {'mode': 26, 'count': 5} + console.log('Variance: ',statistics.var()) // 17.5 + console.log('Standard Deviation: ', statistics.std()) // 4.2 + console.log('Variance: ',statistics.var()) // 17.5 + console.log('Frequency Distribution: ',statistics.freqDist()) # [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] + ``` + + ```sh + console.log(statistics.describe()) + Count: 25 + Sum: 744 + Min: 24 + Max: 38 + Range: 14 + Mean: 30 + Median: 29 + Mode: (26, 5) + Variance: 17.5 + Standard Deviation: 4.2 + Frequency Distribution: [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] + ``` + +🎉 CONGRATULATIONS ! 🎉 + +[<< Day 8](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/08_Day/08_day_objects.md) | [Day 10 >>](#) \ No newline at end of file diff --git a/09_Day/09_day_starter/data/countries_data.js b/09_Day/09_day_starter/data/countries_data.js new file mode 100644 index 0000000..92acddd --- /dev/null +++ b/09_Day/09_day_starter/data/countries_data.js @@ -0,0 +1,2013 @@ +const countries = [ + { + name: 'Afghanistan', + capital: 'Kabul', + languages: ['Pashto', 'Uzbek', 'Turkmen'], + population: 27657145, + flag: 'https://restcountries.eu/data/afg.svg', + currency: 'Afghan afghani' + }, + { + name: 'Åland Islands', + capital: 'Mariehamn', + languages: ['Swedish'], + population: 28875, + flag: 'https://restcountries.eu/data/ala.svg', + currency: 'Euro' + }, + { + name: 'Albania', + capital: 'Tirana', + languages: ['Albanian'], + population: 2886026, + flag: 'https://restcountries.eu/data/alb.svg', + currency: 'Albanian lek' + }, + { + name: 'Algeria', + capital: 'Algiers', + languages: ['Arabic'], + population: 40400000, + flag: 'https://restcountries.eu/data/dza.svg', + currency: 'Algerian dinar' + }, + { + name: 'American Samoa', + capital: 'Pago Pago', + languages: ['English', 'Samoan'], + population: 57100, + flag: 'https://restcountries.eu/data/asm.svg', + currency: 'United State Dollar' + }, + { + name: 'Andorra', + capital: 'Andorra la Vella', + languages: ['Catalan'], + population: 78014, + flag: 'https://restcountries.eu/data/and.svg', + currency: 'Euro' + }, + { + name: 'Angola', + capital: 'Luanda', + languages: ['Portuguese'], + population: 25868000, + flag: 'https://restcountries.eu/data/ago.svg', + currency: 'Angolan kwanza' + }, + { + name: 'Anguilla', + capital: 'The Valley', + languages: ['English'], + population: 13452, + flag: 'https://restcountries.eu/data/aia.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Antarctica', + capital: '', + languages: ['English', 'Russian'], + population: 1000, + flag: 'https://restcountries.eu/data/ata.svg', + currency: 'Australian dollar' + }, + { + name: 'Antigua and Barbuda', + capital: "Saint John's", + languages: ['English'], + population: 86295, + flag: 'https://restcountries.eu/data/atg.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Argentina', + capital: 'Buenos Aires', + languages: ['Spanish', 'Guaraní'], + population: 43590400, + flag: 'https://restcountries.eu/data/arg.svg', + currency: 'Argentine peso' + }, + { + name: 'Armenia', + capital: 'Yerevan', + languages: ['Armenian', 'Russian'], + population: 2994400, + flag: 'https://restcountries.eu/data/arm.svg', + currency: 'Armenian dram' + }, + { + name: 'Aruba', + capital: 'Oranjestad', + languages: ['Dutch', '(Eastern) Punjabi'], + population: 107394, + flag: 'https://restcountries.eu/data/abw.svg', + currency: 'Aruban florin' + }, + { + name: 'Australia', + capital: 'Canberra', + languages: ['English'], + population: 24117360, + flag: 'https://restcountries.eu/data/aus.svg', + currency: 'Australian dollar' + }, + { + name: 'Austria', + capital: 'Vienna', + languages: ['German'], + population: 8725931, + flag: 'https://restcountries.eu/data/aut.svg', + currency: 'Euro' + }, + { + name: 'Azerbaijan', + capital: 'Baku', + languages: ['Azerbaijani'], + population: 9730500, + flag: 'https://restcountries.eu/data/aze.svg', + currency: 'Azerbaijani manat' + }, + { + name: 'Bahamas', + capital: 'Nassau', + languages: ['English'], + population: 378040, + flag: 'https://restcountries.eu/data/bhs.svg', + currency: 'Bahamian dollar' + }, + { + name: 'Bahrain', + capital: 'Manama', + languages: ['Arabic'], + population: 1404900, + flag: 'https://restcountries.eu/data/bhr.svg', + currency: 'Bahraini dinar' + }, + { + name: 'Bangladesh', + capital: 'Dhaka', + languages: ['Bengali'], + population: 161006790, + flag: 'https://restcountries.eu/data/bgd.svg', + currency: 'Bangladeshi taka' + }, + { + name: 'Barbados', + capital: 'Bridgetown', + languages: ['English'], + population: 285000, + flag: 'https://restcountries.eu/data/brb.svg', + currency: 'Barbadian dollar' + }, + { + name: 'Belarus', + capital: 'Minsk', + languages: ['Belarusian', 'Russian'], + population: 9498700, + flag: 'https://restcountries.eu/data/blr.svg', + currency: 'New Belarusian ruble' + }, + { + name: 'Belgium', + capital: 'Brussels', + languages: ['Dutch', 'French', 'German'], + population: 11319511, + flag: 'https://restcountries.eu/data/bel.svg', + currency: 'Euro' + }, + { + name: 'Belize', + capital: 'Belmopan', + languages: ['English', 'Spanish'], + population: 370300, + flag: 'https://restcountries.eu/data/blz.svg', + currency: 'Belize dollar' + }, + { + name: 'Benin', + capital: 'Porto-Novo', + languages: ['French'], + population: 10653654, + flag: 'https://restcountries.eu/data/ben.svg', + currency: 'West African CFA franc' + }, + { + name: 'Bermuda', + capital: 'Hamilton', + languages: ['English'], + population: 61954, + flag: 'https://restcountries.eu/data/bmu.svg', + currency: 'Bermudian dollar' + }, + { + name: 'Bhutan', + capital: 'Thimphu', + languages: ['Dzongkha'], + population: 775620, + flag: 'https://restcountries.eu/data/btn.svg', + currency: 'Bhutanese ngultrum' + }, + { + name: 'Bolivia (Plurinational State of)', + capital: 'Sucre', + languages: ['Spanish', 'Aymara', 'Quechua'], + population: 10985059, + flag: 'https://restcountries.eu/data/bol.svg', + currency: 'Bolivian boliviano' + }, + { + name: 'Bonaire, Sint Eustatius and Saba', + capital: 'Kralendijk', + languages: ['Dutch'], + population: 17408, + flag: 'https://restcountries.eu/data/bes.svg', + currency: 'United States dollar' + }, + { + name: 'Bosnia and Herzegovina', + capital: 'Sarajevo', + languages: ['Bosnian', 'Croatian', 'Serbian'], + population: 3531159, + flag: 'https://restcountries.eu/data/bih.svg', + currency: 'Bosnia and Herzegovina convertible mark' + }, + { + name: 'Botswana', + capital: 'Gaborone', + languages: ['English', 'Tswana'], + population: 2141206, + flag: 'https://restcountries.eu/data/bwa.svg', + currency: 'Botswana pula' + }, + { + name: 'Bouvet Island', + capital: '', + languages: ['Norwegian', 'Norwegian Bokmål', 'Norwegian Nynorsk'], + population: 0, + flag: 'https://restcountries.eu/data/bvt.svg', + currency: 'Norwegian krone' + }, + { + name: 'Brazil', + capital: 'Brasília', + languages: ['Portuguese'], + population: 206135893, + flag: 'https://restcountries.eu/data/bra.svg', + currency: 'Brazilian real' + }, + { + name: 'British Indian Ocean Territory', + capital: 'Diego Garcia', + languages: ['English'], + population: 3000, + flag: 'https://restcountries.eu/data/iot.svg', + currency: 'United States dollar' + }, + { + name: 'United States Minor Outlying Islands', + capital: '', + languages: ['English'], + population: 300, + flag: 'https://restcountries.eu/data/umi.svg', + currency: 'United States Dollar' + }, + { + name: 'Virgin Islands (British)', + capital: 'Road Town', + languages: ['English'], + population: 28514, + flag: 'https://restcountries.eu/data/vgb.svg', + currency: '[D]' + }, + { + name: 'Virgin Islands (U.S.)', + capital: 'Charlotte Amalie', + languages: ['English'], + population: 114743, + flag: 'https://restcountries.eu/data/vir.svg', + currency: 'United States dollar' + }, + { + name: 'Brunei Darussalam', + capital: 'Bandar Seri Begawan', + languages: ['Malay'], + population: 411900, + flag: 'https://restcountries.eu/data/brn.svg', + currency: 'Brunei dollar' + }, + { + name: 'Bulgaria', + capital: 'Sofia', + languages: ['Bulgarian'], + population: 7153784, + flag: 'https://restcountries.eu/data/bgr.svg', + currency: 'Bulgarian lev' + }, + { + name: 'Burkina Faso', + capital: 'Ouagadougou', + languages: ['French', 'Fula'], + population: 19034397, + flag: 'https://restcountries.eu/data/bfa.svg', + currency: 'West African CFA franc' + }, + { + name: 'Burundi', + capital: 'Bujumbura', + languages: ['French', 'Kirundi'], + population: 10114505, + flag: 'https://restcountries.eu/data/bdi.svg', + currency: 'Burundian franc' + }, + { + name: 'Cambodia', + capital: 'Phnom Penh', + languages: ['Khmer'], + population: 15626444, + flag: 'https://restcountries.eu/data/khm.svg', + currency: 'Cambodian riel' + }, + { + name: 'Cameroon', + capital: 'Yaoundé', + languages: ['English', 'French'], + population: 22709892, + flag: 'https://restcountries.eu/data/cmr.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Canada', + capital: 'Ottawa', + languages: ['English', 'French'], + population: 36155487, + flag: 'https://restcountries.eu/data/can.svg', + currency: 'Canadian dollar' + }, + { + name: 'Cabo Verde', + capital: 'Praia', + languages: ['Portuguese'], + population: 531239, + flag: 'https://restcountries.eu/data/cpv.svg', + currency: 'Cape Verdean escudo' + }, + { + name: 'Cayman Islands', + capital: 'George Town', + languages: ['English'], + population: 58238, + flag: 'https://restcountries.eu/data/cym.svg', + currency: 'Cayman Islands dollar' + }, + { + name: 'Central African Republic', + capital: 'Bangui', + languages: ['French', 'Sango'], + population: 4998000, + flag: 'https://restcountries.eu/data/caf.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Chad', + capital: "N'Djamena", + languages: ['French', 'Arabic'], + population: 14497000, + flag: 'https://restcountries.eu/data/tcd.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Chile', + capital: 'Santiago', + languages: ['Spanish'], + population: 18191900, + flag: 'https://restcountries.eu/data/chl.svg', + currency: 'Chilean peso' + }, + { + name: 'China', + capital: 'Beijing', + languages: ['Chinese'], + population: 1377422166, + flag: 'https://restcountries.eu/data/chn.svg', + currency: 'Chinese yuan' + }, + { + name: 'Christmas Island', + capital: 'Flying Fish Cove', + languages: ['English'], + population: 2072, + flag: 'https://restcountries.eu/data/cxr.svg', + currency: 'Australian dollar' + }, + { + name: 'Cocos (Keeling) Islands', + capital: 'West Island', + languages: ['English'], + population: 550, + flag: 'https://restcountries.eu/data/cck.svg', + currency: 'Australian dollar' + }, + { + name: 'Colombia', + capital: 'Bogotá', + languages: ['Spanish'], + population: 48759958, + flag: 'https://restcountries.eu/data/col.svg', + currency: 'Colombian peso' + }, + { + name: 'Comoros', + capital: 'Moroni', + languages: ['Arabic', 'French'], + population: 806153, + flag: 'https://restcountries.eu/data/com.svg', + currency: 'Comorian franc' + }, + { + name: 'Congo', + capital: 'Brazzaville', + languages: ['French', 'Lingala'], + population: 4741000, + flag: 'https://restcountries.eu/data/cog.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Congo (Democratic Republic of the)', + capital: 'Kinshasa', + languages: ['French', 'Lingala', 'Kongo', 'Swahili', 'Luba-Katanga'], + population: 85026000, + flag: 'https://restcountries.eu/data/cod.svg', + currency: 'Congolese franc' + }, + { + name: 'Cook Islands', + capital: 'Avarua', + languages: ['English'], + population: 18100, + flag: 'https://restcountries.eu/data/cok.svg', + currency: 'New Zealand dollar' + }, + { + name: 'Costa Rica', + capital: 'San José', + languages: ['Spanish'], + population: 4890379, + flag: 'https://restcountries.eu/data/cri.svg', + currency: 'Costa Rican colón' + }, + { + name: 'Croatia', + capital: 'Zagreb', + languages: ['Croatian'], + population: 4190669, + flag: 'https://restcountries.eu/data/hrv.svg', + currency: 'Croatian kuna' + }, + { + name: 'Cuba', + capital: 'Havana', + languages: ['Spanish'], + population: 11239004, + flag: 'https://restcountries.eu/data/cub.svg', + currency: 'Cuban convertible peso' + }, + { + name: 'Curaçao', + capital: 'Willemstad', + languages: ['Dutch', '(Eastern) Punjabi', 'English'], + population: 154843, + flag: 'https://restcountries.eu/data/cuw.svg', + currency: 'Netherlands Antillean guilder' + }, + { + name: 'Cyprus', + capital: 'Nicosia', + languages: ['Greek (modern)', 'Turkish', 'Armenian'], + population: 847000, + flag: 'https://restcountries.eu/data/cyp.svg', + currency: 'Euro' + }, + { + name: 'Czech Republic', + capital: 'Prague', + languages: ['Czech', 'Slovak'], + population: 10558524, + flag: 'https://restcountries.eu/data/cze.svg', + currency: 'Czech koruna' + }, + { + name: 'Denmark', + capital: 'Copenhagen', + languages: ['Danish'], + population: 5717014, + flag: 'https://restcountries.eu/data/dnk.svg', + currency: 'Danish krone' + }, + { + name: 'Djibouti', + capital: 'Djibouti', + languages: ['French', 'Arabic'], + population: 900000, + flag: 'https://restcountries.eu/data/dji.svg', + currency: 'Djiboutian franc' + }, + { + name: 'Dominica', + capital: 'Roseau', + languages: ['English'], + population: 71293, + flag: 'https://restcountries.eu/data/dma.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Dominican Republic', + capital: 'Santo Domingo', + languages: ['Spanish'], + population: 10075045, + flag: 'https://restcountries.eu/data/dom.svg', + currency: 'Dominican peso' + }, + { + name: 'Ecuador', + capital: 'Quito', + languages: ['Spanish'], + population: 16545799, + flag: 'https://restcountries.eu/data/ecu.svg', + currency: 'United States dollar' + }, + { + name: 'Egypt', + capital: 'Cairo', + languages: ['Arabic'], + population: 91290000, + flag: 'https://restcountries.eu/data/egy.svg', + currency: 'Egyptian pound' + }, + { + name: 'El Salvador', + capital: 'San Salvador', + languages: ['Spanish'], + population: 6520675, + flag: 'https://restcountries.eu/data/slv.svg', + currency: 'United States dollar' + }, + { + name: 'Equatorial Guinea', + capital: 'Malabo', + languages: ['Spanish', 'French'], + population: 1222442, + flag: 'https://restcountries.eu/data/gnq.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Eritrea', + capital: 'Asmara', + languages: ['Tigrinya', 'Arabic', 'English'], + population: 5352000, + flag: 'https://restcountries.eu/data/eri.svg', + currency: 'Eritrean nakfa' + }, + { + name: 'Estonia', + capital: 'Tallinn', + languages: ['Estonian'], + population: 1315944, + flag: 'https://restcountries.eu/data/est.svg', + currency: 'Euro' + }, + { + name: 'Ethiopia', + capital: 'Addis Ababa', + languages: ['Amharic'], + population: 92206005, + flag: 'https://restcountries.eu/data/eth.svg', + currency: 'Ethiopian birr' + }, + { + name: 'Falkland Islands (Malvinas)', + capital: 'Stanley', + languages: ['English'], + population: 2563, + flag: 'https://restcountries.eu/data/flk.svg', + currency: 'Falkland Islands pound' + }, + { + name: 'Faroe Islands', + capital: 'Tórshavn', + languages: ['Faroese'], + population: 49376, + flag: 'https://restcountries.eu/data/fro.svg', + currency: 'Danish krone' + }, + { + name: 'Fiji', + capital: 'Suva', + languages: ['English', 'Fijian', 'Hindi', 'Urdu'], + population: 867000, + flag: 'https://restcountries.eu/data/fji.svg', + currency: 'Fijian dollar' + }, + { + name: 'Finland', + capital: 'Helsinki', + languages: ['Finnish', 'Swedish'], + population: 5491817, + flag: 'https://restcountries.eu/data/fin.svg', + currency: 'Euro' + }, + { + name: 'France', + capital: 'Paris', + languages: ['French'], + population: 66710000, + flag: 'https://restcountries.eu/data/fra.svg', + currency: 'Euro' + }, + { + name: 'French Guiana', + capital: 'Cayenne', + languages: ['French'], + population: 254541, + flag: 'https://restcountries.eu/data/guf.svg', + currency: 'Euro' + }, + { + name: 'French Polynesia', + capital: 'Papeetē', + languages: ['French'], + population: 271800, + flag: 'https://restcountries.eu/data/pyf.svg', + currency: 'CFP franc' + }, + { + name: 'French Southern Territories', + capital: 'Port-aux-Français', + languages: ['French'], + population: 140, + flag: 'https://restcountries.eu/data/atf.svg', + currency: 'Euro' + }, + { + name: 'Gabon', + capital: 'Libreville', + languages: ['French'], + population: 1802278, + flag: 'https://restcountries.eu/data/gab.svg', + currency: 'Central African CFA franc' + }, + { + name: 'Gambia', + capital: 'Banjul', + languages: ['English'], + population: 1882450, + flag: 'https://restcountries.eu/data/gmb.svg', + currency: 'Gambian dalasi' + }, + { + name: 'Georgia', + capital: 'Tbilisi', + languages: ['Georgian'], + population: 3720400, + flag: 'https://restcountries.eu/data/geo.svg', + currency: 'Georgian Lari' + }, + { + name: 'Germany', + capital: 'Berlin', + languages: ['German'], + population: 81770900, + flag: 'https://restcountries.eu/data/deu.svg', + currency: 'Euro' + }, + { + name: 'Ghana', + capital: 'Accra', + languages: ['English'], + population: 27670174, + flag: 'https://restcountries.eu/data/gha.svg', + currency: 'Ghanaian cedi' + }, + { + name: 'Gibraltar', + capital: 'Gibraltar', + languages: ['English'], + population: 33140, + flag: 'https://restcountries.eu/data/gib.svg', + currency: 'Gibraltar pound' + }, + { + name: 'Greece', + capital: 'Athens', + languages: ['Greek (modern)'], + population: 10858018, + flag: 'https://restcountries.eu/data/grc.svg', + currency: 'Euro' + }, + { + name: 'Greenland', + capital: 'Nuuk', + languages: ['Kalaallisut'], + population: 55847, + flag: 'https://restcountries.eu/data/grl.svg', + currency: 'Danish krone' + }, + { + name: 'Grenada', + capital: "St. George's", + languages: ['English'], + population: 103328, + flag: 'https://restcountries.eu/data/grd.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Guadeloupe', + capital: 'Basse-Terre', + languages: ['French'], + population: 400132, + flag: 'https://restcountries.eu/data/glp.svg', + currency: 'Euro' + }, + { + name: 'Guam', + capital: 'Hagåtña', + languages: ['English', 'Chamorro', 'Spanish'], + population: 184200, + flag: 'https://restcountries.eu/data/gum.svg', + currency: 'United States dollar' + }, + { + name: 'Guatemala', + capital: 'Guatemala City', + languages: ['Spanish'], + population: 16176133, + flag: 'https://restcountries.eu/data/gtm.svg', + currency: 'Guatemalan quetzal' + }, + { + name: 'Guernsey', + capital: 'St. Peter Port', + languages: ['English', 'French'], + population: 62999, + flag: 'https://restcountries.eu/data/ggy.svg', + currency: 'British pound' + }, + { + name: 'Guinea', + capital: 'Conakry', + languages: ['French', 'Fula'], + population: 12947000, + flag: 'https://restcountries.eu/data/gin.svg', + currency: 'Guinean franc' + }, + { + name: 'Guinea-Bissau', + capital: 'Bissau', + languages: ['Portuguese'], + population: 1547777, + flag: 'https://restcountries.eu/data/gnb.svg', + currency: 'West African CFA franc' + }, + { + name: 'Guyana', + capital: 'Georgetown', + languages: ['English'], + population: 746900, + flag: 'https://restcountries.eu/data/guy.svg', + currency: 'Guyanese dollar' + }, + { + name: 'Haiti', + capital: 'Port-au-Prince', + languages: ['French', 'Haitian'], + population: 11078033, + flag: 'https://restcountries.eu/data/hti.svg', + currency: 'Haitian gourde' + }, + { + name: 'Heard Island and McDonald Islands', + capital: '', + languages: ['English'], + population: 0, + flag: 'https://restcountries.eu/data/hmd.svg', + currency: 'Australian dollar' + }, + { + name: 'Holy See', + capital: 'Rome', + languages: ['Latin', 'Italian', 'French', 'German'], + population: 451, + flag: 'https://restcountries.eu/data/vat.svg', + currency: 'Euro' + }, + { + name: 'Honduras', + capital: 'Tegucigalpa', + languages: ['Spanish'], + population: 8576532, + flag: 'https://restcountries.eu/data/hnd.svg', + currency: 'Honduran lempira' + }, + { + name: 'Hong Kong', + capital: 'City of Victoria', + languages: ['English', 'Chinese'], + population: 7324300, + flag: 'https://restcountries.eu/data/hkg.svg', + currency: 'Hong Kong dollar' + }, + { + name: 'Hungary', + capital: 'Budapest', + languages: ['Hungarian'], + population: 9823000, + flag: 'https://restcountries.eu/data/hun.svg', + currency: 'Hungarian forint' + }, + { + name: 'Iceland', + capital: 'Reykjavík', + languages: ['Icelandic'], + population: 334300, + flag: 'https://restcountries.eu/data/isl.svg', + currency: 'Icelandic króna' + }, + { + name: 'India', + capital: 'New Delhi', + languages: ['Hindi', 'English'], + population: 1295210000, + flag: 'https://restcountries.eu/data/ind.svg', + currency: 'Indian rupee' + }, + { + name: 'Indonesia', + capital: 'Jakarta', + languages: ['Indonesian'], + population: 258705000, + flag: 'https://restcountries.eu/data/idn.svg', + currency: 'Indonesian rupiah' + }, + { + name: "Côte d'Ivoire", + capital: 'Yamoussoukro', + languages: ['French'], + population: 22671331, + flag: 'https://restcountries.eu/data/civ.svg', + currency: 'West African CFA franc' + }, + { + name: 'Iran (Islamic Republic of)', + capital: 'Tehran', + languages: ['Persian (Farsi)'], + population: 79369900, + flag: 'https://restcountries.eu/data/irn.svg', + currency: 'Iranian rial' + }, + { + name: 'Iraq', + capital: 'Baghdad', + languages: ['Arabic', 'Kurdish'], + population: 37883543, + flag: 'https://restcountries.eu/data/irq.svg', + currency: 'Iraqi dinar' + }, + { + name: 'Ireland', + capital: 'Dublin', + languages: ['Irish', 'English'], + population: 6378000, + flag: 'https://restcountries.eu/data/irl.svg', + currency: 'Euro' + }, + { + name: 'Isle of Man', + capital: 'Douglas', + languages: ['English', 'Manx'], + population: 84497, + flag: 'https://restcountries.eu/data/imn.svg', + currency: 'British pound' + }, + { + name: 'Israel', + capital: 'Jerusalem', + languages: ['Hebrew (modern)', 'Arabic'], + population: 8527400, + flag: 'https://restcountries.eu/data/isr.svg', + currency: 'Israeli new shekel' + }, + { + name: 'Italy', + capital: 'Rome', + languages: ['Italian'], + population: 60665551, + flag: 'https://restcountries.eu/data/ita.svg', + currency: 'Euro' + }, + { + name: 'Jamaica', + capital: 'Kingston', + languages: ['English'], + population: 2723246, + flag: 'https://restcountries.eu/data/jam.svg', + currency: 'Jamaican dollar' + }, + { + name: 'Japan', + capital: 'Tokyo', + languages: ['Japanese'], + population: 126960000, + flag: 'https://restcountries.eu/data/jpn.svg', + currency: 'Japanese yen' + }, + { + name: 'Jersey', + capital: 'Saint Helier', + languages: ['English', 'French'], + population: 100800, + flag: 'https://restcountries.eu/data/jey.svg', + currency: 'British pound' + }, + { + name: 'Jordan', + capital: 'Amman', + languages: ['Arabic'], + population: 9531712, + flag: 'https://restcountries.eu/data/jor.svg', + currency: 'Jordanian dinar' + }, + { + name: 'Kazakhstan', + capital: 'Astana', + languages: ['Kazakh', 'Russian'], + population: 17753200, + flag: 'https://restcountries.eu/data/kaz.svg', + currency: 'Kazakhstani tenge' + }, + { + name: 'Kenya', + capital: 'Nairobi', + languages: ['English', 'Swahili'], + population: 47251000, + flag: 'https://restcountries.eu/data/ken.svg', + currency: 'Kenyan shilling' + }, + { + name: 'Kiribati', + capital: 'South Tarawa', + languages: ['English'], + population: 113400, + flag: 'https://restcountries.eu/data/kir.svg', + currency: 'Australian dollar' + }, + { + name: 'Kuwait', + capital: 'Kuwait City', + languages: ['Arabic'], + population: 4183658, + flag: 'https://restcountries.eu/data/kwt.svg', + currency: 'Kuwaiti dinar' + }, + { + name: 'Kyrgyzstan', + capital: 'Bishkek', + languages: ['Kyrgyz', 'Russian'], + population: 6047800, + flag: 'https://restcountries.eu/data/kgz.svg', + currency: 'Kyrgyzstani som' + }, + { + name: "Lao People's Democratic Republic", + capital: 'Vientiane', + languages: ['Lao'], + population: 6492400, + flag: 'https://restcountries.eu/data/lao.svg', + currency: 'Lao kip' + }, + { + name: 'Latvia', + capital: 'Riga', + languages: ['Latvian'], + population: 1961600, + flag: 'https://restcountries.eu/data/lva.svg', + currency: 'Euro' + }, + { + name: 'Lebanon', + capital: 'Beirut', + languages: ['Arabic', 'French'], + population: 5988000, + flag: 'https://restcountries.eu/data/lbn.svg', + currency: 'Lebanese pound' + }, + { + name: 'Lesotho', + capital: 'Maseru', + languages: ['English', 'Southern Sotho'], + population: 1894194, + flag: 'https://restcountries.eu/data/lso.svg', + currency: 'Lesotho loti' + }, + { + name: 'Liberia', + capital: 'Monrovia', + languages: ['English'], + population: 4615000, + flag: 'https://restcountries.eu/data/lbr.svg', + currency: 'Liberian dollar' + }, + { + name: 'Libya', + capital: 'Tripoli', + languages: ['Arabic'], + population: 6385000, + flag: 'https://restcountries.eu/data/lby.svg', + currency: 'Libyan dinar' + }, + { + name: 'Liechtenstein', + capital: 'Vaduz', + languages: ['German'], + population: 37623, + flag: 'https://restcountries.eu/data/lie.svg', + currency: 'Swiss franc' + }, + { + name: 'Lithuania', + capital: 'Vilnius', + languages: ['Lithuanian'], + population: 2872294, + flag: 'https://restcountries.eu/data/ltu.svg', + currency: 'Euro' + }, + { + name: 'Luxembourg', + capital: 'Luxembourg', + languages: ['French', 'German', 'Luxembourgish'], + population: 576200, + flag: 'https://restcountries.eu/data/lux.svg', + currency: 'Euro' + }, + { + name: 'Macao', + capital: '', + languages: ['Chinese', 'Portuguese'], + population: 649100, + flag: 'https://restcountries.eu/data/mac.svg', + currency: 'Macanese pataca' + }, + { + name: 'Macedonia (the former Yugoslav Republic of)', + capital: 'Skopje', + languages: ['Macedonian'], + population: 2058539, + flag: 'https://restcountries.eu/data/mkd.svg', + currency: 'Macedonian denar' + }, + { + name: 'Madagascar', + capital: 'Antananarivo', + languages: ['French', 'Malagasy'], + population: 22434363, + flag: 'https://restcountries.eu/data/mdg.svg', + currency: 'Malagasy ariary' + }, + { + name: 'Malawi', + capital: 'Lilongwe', + languages: ['English', 'Chichewa'], + population: 16832910, + flag: 'https://restcountries.eu/data/mwi.svg', + currency: 'Malawian kwacha' + }, + { + name: 'Malaysia', + capital: 'Kuala Lumpur', + languages: ['Malaysian'], + population: 31405416, + flag: 'https://restcountries.eu/data/mys.svg', + currency: 'Malaysian ringgit' + }, + { + name: 'Maldives', + capital: 'Malé', + languages: ['Divehi'], + population: 344023, + flag: 'https://restcountries.eu/data/mdv.svg', + currency: 'Maldivian rufiyaa' + }, + { + name: 'Mali', + capital: 'Bamako', + languages: ['French'], + population: 18135000, + flag: 'https://restcountries.eu/data/mli.svg', + currency: 'West African CFA franc' + }, + { + name: 'Malta', + capital: 'Valletta', + languages: ['Maltese', 'English'], + population: 425384, + flag: 'https://restcountries.eu/data/mlt.svg', + currency: 'Euro' + }, + { + name: 'Marshall Islands', + capital: 'Majuro', + languages: ['English', 'Marshallese'], + population: 54880, + flag: 'https://restcountries.eu/data/mhl.svg', + currency: 'United States dollar' + }, + { + name: 'Martinique', + capital: 'Fort-de-France', + languages: ['French'], + population: 378243, + flag: 'https://restcountries.eu/data/mtq.svg', + currency: 'Euro' + }, + { + name: 'Mauritania', + capital: 'Nouakchott', + languages: ['Arabic'], + population: 3718678, + flag: 'https://restcountries.eu/data/mrt.svg', + currency: 'Mauritanian ouguiya' + }, + { + name: 'Mauritius', + capital: 'Port Louis', + languages: ['English'], + population: 1262879, + flag: 'https://restcountries.eu/data/mus.svg', + currency: 'Mauritian rupee' + }, + { + name: 'Mayotte', + capital: 'Mamoudzou', + languages: ['French'], + population: 226915, + flag: 'https://restcountries.eu/data/myt.svg', + currency: 'Euro' + }, + { + name: 'Mexico', + capital: 'Mexico City', + languages: ['Spanish'], + population: 122273473, + flag: 'https://restcountries.eu/data/mex.svg', + currency: 'Mexican peso' + }, + { + name: 'Micronesia (Federated States of)', + capital: 'Palikir', + languages: ['English'], + population: 102800, + flag: 'https://restcountries.eu/data/fsm.svg', + currency: '[D]' + }, + { + name: 'Moldova (Republic of)', + capital: 'Chișinău', + languages: ['Romanian'], + population: 3553100, + flag: 'https://restcountries.eu/data/mda.svg', + currency: 'Moldovan leu' + }, + { + name: 'Monaco', + capital: 'Monaco', + languages: ['French'], + population: 38400, + flag: 'https://restcountries.eu/data/mco.svg', + currency: 'Euro' + }, + { + name: 'Mongolia', + capital: 'Ulan Bator', + languages: ['Mongolian'], + population: 3093100, + flag: 'https://restcountries.eu/data/mng.svg', + currency: 'Mongolian tögrög' + }, + { + name: 'Montenegro', + capital: 'Podgorica', + languages: ['Serbian', 'Bosnian', 'Albanian', 'Croatian'], + population: 621810, + flag: 'https://restcountries.eu/data/mne.svg', + currency: 'Euro' + }, + { + name: 'Montserrat', + capital: 'Plymouth', + languages: ['English'], + population: 4922, + flag: 'https://restcountries.eu/data/msr.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Morocco', + capital: 'Rabat', + languages: ['Arabic'], + population: 33337529, + flag: 'https://restcountries.eu/data/mar.svg', + currency: 'Moroccan dirham' + }, + { + name: 'Mozambique', + capital: 'Maputo', + languages: ['Portuguese'], + population: 26423700, + flag: 'https://restcountries.eu/data/moz.svg', + currency: 'Mozambican metical' + }, + { + name: 'Myanmar', + capital: 'Naypyidaw', + languages: ['Burmese'], + population: 51419420, + flag: 'https://restcountries.eu/data/mmr.svg', + currency: 'Burmese kyat' + }, + { + name: 'Namibia', + capital: 'Windhoek', + languages: ['English', 'Afrikaans'], + population: 2324388, + flag: 'https://restcountries.eu/data/nam.svg', + currency: 'Namibian dollar' + }, + { + name: 'Nauru', + capital: 'Yaren', + languages: ['English', 'Nauruan'], + population: 10084, + flag: 'https://restcountries.eu/data/nru.svg', + currency: 'Australian dollar' + }, + { + name: 'Nepal', + capital: 'Kathmandu', + languages: ['Nepali'], + population: 28431500, + flag: 'https://restcountries.eu/data/npl.svg', + currency: 'Nepalese rupee' + }, + { + name: 'Netherlands', + capital: 'Amsterdam', + languages: ['Dutch'], + population: 17019800, + flag: 'https://restcountries.eu/data/nld.svg', + currency: 'Euro' + }, + { + name: 'New Caledonia', + capital: 'Nouméa', + languages: ['French'], + population: 268767, + flag: 'https://restcountries.eu/data/ncl.svg', + currency: 'CFP franc' + }, + { + name: 'New Zealand', + capital: 'Wellington', + languages: ['English', 'Māori'], + population: 4697854, + flag: 'https://restcountries.eu/data/nzl.svg', + currency: 'New Zealand dollar' + }, + { + name: 'Nicaragua', + capital: 'Managua', + languages: ['Spanish'], + population: 6262703, + flag: 'https://restcountries.eu/data/nic.svg', + currency: 'Nicaraguan córdoba' + }, + { + name: 'Niger', + capital: 'Niamey', + languages: ['French'], + population: 20715000, + flag: 'https://restcountries.eu/data/ner.svg', + currency: 'West African CFA franc' + }, + { + name: 'Nigeria', + capital: 'Abuja', + languages: ['English'], + population: 186988000, + flag: 'https://restcountries.eu/data/nga.svg', + currency: 'Nigerian naira' + }, + { + name: 'Niue', + capital: 'Alofi', + languages: ['English'], + population: 1470, + flag: 'https://restcountries.eu/data/niu.svg', + currency: 'New Zealand dollar' + }, + { + name: 'Norfolk Island', + capital: 'Kingston', + languages: ['English'], + population: 2302, + flag: 'https://restcountries.eu/data/nfk.svg', + currency: 'Australian dollar' + }, + { + name: "Korea (Democratic People's Republic of)", + capital: 'Pyongyang', + languages: ['Korean'], + population: 25281000, + flag: 'https://restcountries.eu/data/prk.svg', + currency: 'North Korean won' + }, + { + name: 'Northern Mariana Islands', + capital: 'Saipan', + languages: ['English', 'Chamorro'], + population: 56940, + flag: 'https://restcountries.eu/data/mnp.svg', + currency: 'United States dollar' + }, + { + name: 'Norway', + capital: 'Oslo', + languages: ['Norwegian', 'Norwegian Bokmål', 'Norwegian Nynorsk'], + population: 5223256, + flag: 'https://restcountries.eu/data/nor.svg', + currency: 'Norwegian krone' + }, + { + name: 'Oman', + capital: 'Muscat', + languages: ['Arabic'], + population: 4420133, + flag: 'https://restcountries.eu/data/omn.svg', + currency: 'Omani rial' + }, + { + name: 'Pakistan', + capital: 'Islamabad', + languages: ['English', 'Urdu'], + population: 194125062, + flag: 'https://restcountries.eu/data/pak.svg', + currency: 'Pakistani rupee' + }, + { + name: 'Palau', + capital: 'Ngerulmud', + languages: ['English'], + population: 17950, + flag: 'https://restcountries.eu/data/plw.svg', + currency: '[E]' + }, + { + name: 'Palestine, State of', + capital: 'Ramallah', + languages: ['Arabic'], + population: 4682467, + flag: 'https://restcountries.eu/data/pse.svg', + currency: 'Israeli new sheqel' + }, + { + name: 'Panama', + capital: 'Panama City', + languages: ['Spanish'], + population: 3814672, + flag: 'https://restcountries.eu/data/pan.svg', + currency: 'Panamanian balboa' + }, + { + name: 'Papua New Guinea', + capital: 'Port Moresby', + languages: ['English'], + population: 8083700, + flag: 'https://restcountries.eu/data/png.svg', + currency: 'Papua New Guinean kina' + }, + { + name: 'Paraguay', + capital: 'Asunción', + languages: ['Spanish', 'Guaraní'], + population: 6854536, + flag: 'https://restcountries.eu/data/pry.svg', + currency: 'Paraguayan guaraní' + }, + { + name: 'Peru', + capital: 'Lima', + languages: ['Spanish'], + population: 31488700, + flag: 'https://restcountries.eu/data/per.svg', + currency: 'Peruvian sol' + }, + { + name: 'Philippines', + capital: 'Manila', + languages: ['English'], + population: 103279800, + flag: 'https://restcountries.eu/data/phl.svg', + currency: 'Philippine peso' + }, + { + name: 'Pitcairn', + capital: 'Adamstown', + languages: ['English'], + population: 56, + flag: 'https://restcountries.eu/data/pcn.svg', + currency: 'New Zealand dollar' + }, + { + name: 'Poland', + capital: 'Warsaw', + languages: ['Polish'], + population: 38437239, + flag: 'https://restcountries.eu/data/pol.svg', + currency: 'Polish złoty' + }, + { + name: 'Portugal', + capital: 'Lisbon', + languages: ['Portuguese'], + population: 10374822, + flag: 'https://restcountries.eu/data/prt.svg', + currency: 'Euro' + }, + { + name: 'Puerto Rico', + capital: 'San Juan', + languages: ['Spanish', 'English'], + population: 3474182, + flag: 'https://restcountries.eu/data/pri.svg', + currency: 'United States dollar' + }, + { + name: 'Qatar', + capital: 'Doha', + languages: ['Arabic'], + population: 2587564, + flag: 'https://restcountries.eu/data/qat.svg', + currency: 'Qatari riyal' + }, + { + name: 'Republic of Kosovo', + capital: 'Pristina', + languages: ['Albanian', 'Serbian'], + population: 1733842, + flag: 'https://restcountries.eu/data/kos.svg', + currency: 'Euro' + }, + { + name: 'Réunion', + capital: 'Saint-Denis', + languages: ['French'], + population: 840974, + flag: 'https://restcountries.eu/data/reu.svg', + currency: 'Euro' + }, + { + name: 'Romania', + capital: 'Bucharest', + languages: ['Romanian'], + population: 19861408, + flag: 'https://restcountries.eu/data/rou.svg', + currency: 'Romanian leu' + }, + { + name: 'Russian Federation', + capital: 'Moscow', + languages: ['Russian'], + population: 146599183, + flag: 'https://restcountries.eu/data/rus.svg', + currency: 'Russian ruble' + }, + { + name: 'Rwanda', + capital: 'Kigali', + languages: ['Kinyarwanda', 'English', 'French'], + population: 11553188, + flag: 'https://restcountries.eu/data/rwa.svg', + currency: 'Rwandan franc' + }, + { + name: 'Saint Barthélemy', + capital: 'Gustavia', + languages: ['French'], + population: 9417, + flag: 'https://restcountries.eu/data/blm.svg', + currency: 'Euro' + }, + { + name: 'Saint Helena, Ascension and Tristan da Cunha', + capital: 'Jamestown', + languages: ['English'], + population: 4255, + flag: 'https://restcountries.eu/data/shn.svg', + currency: 'Saint Helena pound' + }, + { + name: 'Saint Kitts and Nevis', + capital: 'Basseterre', + languages: ['English'], + population: 46204, + flag: 'https://restcountries.eu/data/kna.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Saint Lucia', + capital: 'Castries', + languages: ['English'], + population: 186000, + flag: 'https://restcountries.eu/data/lca.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Saint Martin (French part)', + capital: 'Marigot', + languages: ['English', 'French', 'Dutch'], + population: 36979, + flag: 'https://restcountries.eu/data/maf.svg', + currency: 'Euro' + }, + { + name: 'Saint Pierre and Miquelon', + capital: 'Saint-Pierre', + languages: ['French'], + population: 6069, + flag: 'https://restcountries.eu/data/spm.svg', + currency: 'Euro' + }, + { + name: 'Saint Vincent and the Grenadines', + capital: 'Kingstown', + languages: ['English'], + population: 109991, + flag: 'https://restcountries.eu/data/vct.svg', + currency: 'East Caribbean dollar' + }, + { + name: 'Samoa', + capital: 'Apia', + languages: ['Samoan', 'English'], + population: 194899, + flag: 'https://restcountries.eu/data/wsm.svg', + currency: 'Samoan tālā' + }, + { + name: 'San Marino', + capital: 'City of San Marino', + languages: ['Italian'], + population: 33005, + flag: 'https://restcountries.eu/data/smr.svg', + currency: 'Euro' + }, + { + name: 'Sao Tome and Principe', + capital: 'São Tomé', + languages: ['Portuguese'], + population: 187356, + flag: 'https://restcountries.eu/data/stp.svg', + currency: 'São Tomé and Príncipe dobra' + }, + { + name: 'Saudi Arabia', + capital: 'Riyadh', + languages: ['Arabic'], + population: 32248200, + flag: 'https://restcountries.eu/data/sau.svg', + currency: 'Saudi riyal' + }, + { + name: 'Senegal', + capital: 'Dakar', + languages: ['French'], + population: 14799859, + flag: 'https://restcountries.eu/data/sen.svg', + currency: 'West African CFA franc' + }, + { + name: 'Serbia', + capital: 'Belgrade', + languages: ['Serbian'], + population: 7076372, + flag: 'https://restcountries.eu/data/srb.svg', + currency: 'Serbian dinar' + }, + { + name: 'Seychelles', + capital: 'Victoria', + languages: ['French', 'English'], + population: 91400, + flag: 'https://restcountries.eu/data/syc.svg', + currency: 'Seychellois rupee' + }, + { + name: 'Sierra Leone', + capital: 'Freetown', + languages: ['English'], + population: 7075641, + flag: 'https://restcountries.eu/data/sle.svg', + currency: 'Sierra Leonean leone' + }, + { + name: 'Singapore', + capital: 'Singapore', + languages: ['English', 'Malay', 'Tamil', 'Chinese'], + population: 5535000, + flag: 'https://restcountries.eu/data/sgp.svg', + currency: 'Brunei dollar' + }, + { + name: 'Sint Maarten (Dutch part)', + capital: 'Philipsburg', + languages: ['Dutch', 'English'], + population: 38247, + flag: 'https://restcountries.eu/data/sxm.svg', + currency: 'Netherlands Antillean guilder' + }, + { + name: 'Slovakia', + capital: 'Bratislava', + languages: ['Slovak'], + population: 5426252, + flag: 'https://restcountries.eu/data/svk.svg', + currency: 'Euro' + }, + { + name: 'Slovenia', + capital: 'Ljubljana', + languages: ['Slovene'], + population: 2064188, + flag: 'https://restcountries.eu/data/svn.svg', + currency: 'Euro' + }, + { + name: 'Solomon Islands', + capital: 'Honiara', + languages: ['English'], + population: 642000, + flag: 'https://restcountries.eu/data/slb.svg', + currency: 'Solomon Islands dollar' + }, + { + name: 'Somalia', + capital: 'Mogadishu', + languages: ['Somali', 'Arabic'], + population: 11079000, + flag: 'https://restcountries.eu/data/som.svg', + currency: 'Somali shilling' + }, + { + name: 'South Africa', + capital: 'Pretoria', + languages: [ + 'Afrikaans', + 'English', + 'Southern Ndebele', + 'Southern Sotho', + 'Swati', + 'Tswana', + 'Tsonga', + 'Venda', + 'Xhosa', + 'Zulu' + ], + population: 55653654, + flag: 'https://restcountries.eu/data/zaf.svg', + currency: 'South African rand' + }, + { + name: 'South Georgia and the South Sandwich Islands', + capital: 'King Edward Point', + languages: ['English'], + population: 30, + flag: 'https://restcountries.eu/data/sgs.svg', + currency: 'British pound' + }, + { + name: 'Korea (Republic of)', + capital: 'Seoul', + languages: ['Korean'], + population: 50801405, + flag: 'https://restcountries.eu/data/kor.svg', + currency: 'South Korean won' + }, + { + name: 'South Sudan', + capital: 'Juba', + languages: ['English'], + population: 12131000, + flag: 'https://restcountries.eu/data/ssd.svg', + currency: 'South Sudanese pound' + }, + { + name: 'Spain', + capital: 'Madrid', + languages: ['Spanish'], + population: 46438422, + flag: 'https://restcountries.eu/data/esp.svg', + currency: 'Euro' + }, + { + name: 'Sri Lanka', + capital: 'Colombo', + languages: ['Sinhalese', 'Tamil'], + population: 20966000, + flag: 'https://restcountries.eu/data/lka.svg', + currency: 'Sri Lankan rupee' + }, + { + name: 'Sudan', + capital: 'Khartoum', + languages: ['Arabic', 'English'], + population: 39598700, + flag: 'https://restcountries.eu/data/sdn.svg', + currency: 'Sudanese pound' + }, + { + name: 'Suriname', + capital: 'Paramaribo', + languages: ['Dutch'], + population: 541638, + flag: 'https://restcountries.eu/data/sur.svg', + currency: 'Surinamese dollar' + }, + { + name: 'Svalbard and Jan Mayen', + capital: 'Longyearbyen', + languages: ['Norwegian'], + population: 2562, + flag: 'https://restcountries.eu/data/sjm.svg', + currency: 'Norwegian krone' + }, + { + name: 'Swaziland', + capital: 'Lobamba', + languages: ['English', 'Swati'], + population: 1132657, + flag: 'https://restcountries.eu/data/swz.svg', + currency: 'Swazi lilangeni' + }, + { + name: 'Sweden', + capital: 'Stockholm', + languages: ['Swedish'], + population: 9894888, + flag: 'https://restcountries.eu/data/swe.svg', + currency: 'Swedish krona' + }, + { + name: 'Switzerland', + capital: 'Bern', + languages: ['German', 'French', 'Italian'], + population: 8341600, + flag: 'https://restcountries.eu/data/che.svg', + currency: 'Swiss franc' + }, + { + name: 'Syrian Arab Republic', + capital: 'Damascus', + languages: ['Arabic'], + population: 18564000, + flag: 'https://restcountries.eu/data/syr.svg', + currency: 'Syrian pound' + }, + { + name: 'Taiwan', + capital: 'Taipei', + languages: ['Chinese'], + population: 23503349, + flag: 'https://restcountries.eu/data/twn.svg', + currency: 'New Taiwan dollar' + }, + { + name: 'Tajikistan', + capital: 'Dushanbe', + languages: ['Tajik', 'Russian'], + population: 8593600, + flag: 'https://restcountries.eu/data/tjk.svg', + currency: 'Tajikistani somoni' + }, + { + name: 'Tanzania, United Republic of', + capital: 'Dodoma', + languages: ['Swahili', 'English'], + population: 55155000, + flag: 'https://restcountries.eu/data/tza.svg', + currency: 'Tanzanian shilling' + }, + { + name: 'Thailand', + capital: 'Bangkok', + languages: ['Thai'], + population: 65327652, + flag: 'https://restcountries.eu/data/tha.svg', + currency: 'Thai baht' + }, + { + name: 'Timor-Leste', + capital: 'Dili', + languages: ['Portuguese'], + population: 1167242, + flag: 'https://restcountries.eu/data/tls.svg', + currency: 'United States dollar' + }, + { + name: 'Togo', + capital: 'Lomé', + languages: ['French'], + population: 7143000, + flag: 'https://restcountries.eu/data/tgo.svg', + currency: 'West African CFA franc' + }, + { + name: 'Tokelau', + capital: 'Fakaofo', + languages: ['English'], + population: 1411, + flag: 'https://restcountries.eu/data/tkl.svg', + currency: 'New Zealand dollar' + }, + { + name: 'Tonga', + capital: "Nuku'alofa", + languages: ['English', 'Tonga (Tonga Islands)'], + population: 103252, + flag: 'https://restcountries.eu/data/ton.svg', + currency: 'Tongan paʻanga' + }, + { + name: 'Trinidad and Tobago', + capital: 'Port of Spain', + languages: ['English'], + population: 1349667, + flag: 'https://restcountries.eu/data/tto.svg', + currency: 'Trinidad and Tobago dollar' + }, + { + name: 'Tunisia', + capital: 'Tunis', + languages: ['Arabic'], + population: 11154400, + flag: 'https://restcountries.eu/data/tun.svg', + currency: 'Tunisian dinar' + }, + { + name: 'Turkey', + capital: 'Ankara', + languages: ['Turkish'], + population: 78741053, + flag: 'https://restcountries.eu/data/tur.svg', + currency: 'Turkish lira' + }, + { + name: 'Turkmenistan', + capital: 'Ashgabat', + languages: ['Turkmen', 'Russian'], + population: 4751120, + flag: 'https://restcountries.eu/data/tkm.svg', + currency: 'Turkmenistan manat' + }, + { + name: 'Turks and Caicos Islands', + capital: 'Cockburn Town', + languages: ['English'], + population: 31458, + flag: 'https://restcountries.eu/data/tca.svg', + currency: 'United States dollar' + }, + { + name: 'Tuvalu', + capital: 'Funafuti', + languages: ['English'], + population: 10640, + flag: 'https://restcountries.eu/data/tuv.svg', + currency: 'Australian dollar' + }, + { + name: 'Uganda', + capital: 'Kampala', + languages: ['English', 'Swahili'], + population: 33860700, + flag: 'https://restcountries.eu/data/uga.svg', + currency: 'Ugandan shilling' + }, + { + name: 'Ukraine', + capital: 'Kiev', + languages: ['Ukrainian'], + population: 42692393, + flag: 'https://restcountries.eu/data/ukr.svg', + currency: 'Ukrainian hryvnia' + }, + { + name: 'United Arab Emirates', + capital: 'Abu Dhabi', + languages: ['Arabic'], + population: 9856000, + flag: 'https://restcountries.eu/data/are.svg', + currency: 'United Arab Emirates dirham' + }, + { + name: 'United Kingdom of Great Britain and Northern Ireland', + capital: 'London', + languages: ['English'], + population: 65110000, + flag: 'https://restcountries.eu/data/gbr.svg', + currency: 'British pound' + }, + { + name: 'United States of America', + capital: 'Washington, D.C.', + languages: ['English'], + population: 323947000, + flag: 'https://restcountries.eu/data/usa.svg', + currency: 'United States dollar' + }, + { + name: 'Uruguay', + capital: 'Montevideo', + languages: ['Spanish'], + population: 3480222, + flag: 'https://restcountries.eu/data/ury.svg', + currency: 'Uruguayan peso' + }, + { + name: 'Uzbekistan', + capital: 'Tashkent', + languages: ['Uzbek', 'Russian'], + population: 31576400, + flag: 'https://restcountries.eu/data/uzb.svg', + currency: "Uzbekistani so'm" + }, + { + name: 'Vanuatu', + capital: 'Port Vila', + languages: ['Bislama', 'English', 'French'], + population: 277500, + flag: 'https://restcountries.eu/data/vut.svg', + currency: 'Vanuatu vatu' + }, + { + name: 'Venezuela (Bolivarian Republic of)', + capital: 'Caracas', + languages: ['Spanish'], + population: 31028700, + flag: 'https://restcountries.eu/data/ven.svg', + currency: 'Venezuelan bolívar' + }, + { + name: 'Viet Nam', + capital: 'Hanoi', + languages: ['Vietnamese'], + population: 92700000, + flag: 'https://restcountries.eu/data/vnm.svg', + currency: 'Vietnamese đồng' + }, + { + name: 'Wallis and Futuna', + capital: 'Mata-Utu', + languages: ['French'], + population: 11750, + flag: 'https://restcountries.eu/data/wlf.svg', + currency: 'CFP franc' + }, + { + name: 'Western Sahara', + capital: 'El Aaiún', + languages: ['Spanish'], + population: 510713, + flag: 'https://restcountries.eu/data/esh.svg', + currency: 'Moroccan dirham' + }, + { + name: 'Yemen', + capital: "Sana'a", + languages: ['Arabic'], + population: 27478000, + flag: 'https://restcountries.eu/data/yem.svg', + currency: 'Yemeni rial' + }, + { + name: 'Zambia', + capital: 'Lusaka', + languages: ['English'], + population: 15933883, + flag: 'https://restcountries.eu/data/zmb.svg', + currency: 'Zambian kwacha' + }, + { + name: 'Zimbabwe', + capital: 'Harare', + languages: ['English', 'Shona', 'Northern Ndebele'], + population: 14240168, + flag: 'https://restcountries.eu/data/zwe.svg', + currency: 'Botswana pula' + } +] diff --git a/09_Day/09_day_starter/index.html b/09_Day/09_day_starter/index.html new file mode 100644 index 0000000..14b20ba --- /dev/null +++ b/09_Day/09_day_starter/index.html @@ -0,0 +1,17 @@ + + + + + 30DaysOfJavaScript:09 Day + + + +

30DaysOfJavaScript:09 Day

+

Functional Programming

+ + + + + + + \ No newline at end of file diff --git a/09_Day/09_day_starter/scripts/main.js b/09_Day/09_day_starter/scripts/main.js new file mode 100644 index 0000000..c6045c8 --- /dev/null +++ b/09_Day/09_day_starter/scripts/main.js @@ -0,0 +1,2 @@ +console.log(countries) +alert('Open the console and check if the countries has been loaded') \ No newline at end of file From 0220609900e3ed2b5f706149bd9c5fced1470eba Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 23:30:27 +0200 Subject: [PATCH 50/54] day 9 --- 08_Day/08_day_objects.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index 4df3dcd..1067d9c 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -17,7 +17,7 @@
-[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) | [Day 9 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_higher_order_function.md) +[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) | [Day 9 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_higher_order_functions.md) ![Thirty Days Of JavaScript](../images/banners/day_1_8.png) @@ -494,4 +494,4 @@ console.log(copyPerson.hasOwnProperty('score')) 🎉 CONGRATULATIONS ! 🎉 -[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) | [Day 9 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_higher_order_function.md) +[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) | [Day 9 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_higher_order_functions.md) From c12f1f9a6161c776a0dd4879ddbbe738d3b27333 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 23:31:33 +0200 Subject: [PATCH 51/54] day 9 --- 08_Day/08_day_objects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index 1067d9c..f99ddc0 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -494,4 +494,4 @@ console.log(copyPerson.hasOwnProperty('score')) 🎉 CONGRATULATIONS ! 🎉 -[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) | [Day 9 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_higher_order_functions.md) +[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) | [Day 9 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/09_Day/09_day_higher_order_functions.md) From be2c8ce1a28d5dcbbc9515c923b80e98b56ca8c6 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 23:33:33 +0200 Subject: [PATCH 52/54] day 9 --- 08_Day/08_day_objects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/08_Day/08_day_objects.md b/08_Day/08_day_objects.md index f99ddc0..8995dec 100644 --- a/08_Day/08_day_objects.md +++ b/08_Day/08_day_objects.md @@ -17,7 +17,7 @@
-[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) | [Day 9 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_higher_order_functions.md) +[<< Day 7](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/07_Day/07_day_functions.md) | [Day 9 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/09_Day/09_day_higher_order_functions.md) ![Thirty Days Of JavaScript](../images/banners/day_1_8.png) From 6adedd1b7b96c66a6e8c1a92e02c2267bd14c0f0 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Thu, 9 Jan 2020 23:37:18 +0200 Subject: [PATCH 53/54] day 9 --- 09_Day/09_day_higher_order_functions.md | 49 +++++++++++++------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/09_Day/09_day_higher_order_functions.md b/09_Day/09_day_higher_order_functions.md index 217d153..407579c 100644 --- a/09_Day/09_day_higher_order_functions.md +++ b/09_Day/09_day_higher_order_functions.md @@ -18,6 +18,9 @@
[<< Day 8](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/08_Day/08_day_objects.md) | [Day 10 >>](#) + +![Day 5](../images/banners/day_1_9.png) + - [Day 9](#day-9) - [Higher Order Function](#higher-order-function) - [Callback](#callback) @@ -492,30 +495,28 @@ console.log(users); // sorted ascending 34. Use the countries information, in the data folder. Sort countries by name, by capital, by population 35. \*\*\* Find the 10 most spoken languages: - ````js - // Your output should look like this - console.log(mostSpokenLanguages(countries, 10)) - [(91, 'English'), - (45, 'French'), - (25, 'Arabic'), - (24, 'Spanish'), - (9, 'Russian'), - (9, 'Portuguese'), - (8, 'Dutch'), - (7, 'German'), - (5, 'Chinese'), - (4, 'Swahili'), - (4, 'Serbian')] - - // Your output should look like this - console.log(mostSpokenLanguages(countries, 3)) - [ - (91, 'English'), - (45, 'French'), - (25, 'Arabic') - ] - ``` - + ````js + // Your output should look like this + console.log(mostSpokenLanguages(countries, 10)) + [(91, 'English'), + (45, 'French'), + (25, 'Arabic'), + (24, 'Spanish'), + (9, 'Russian'), + (9, 'Portuguese'), + (8, 'Dutch'), + (7, 'German'), + (5, 'Chinese'), + (4, 'Swahili'), + (4, 'Serbian')] + + // Your output should look like this + console.log(mostSpokenLanguages(countries, 3)) + [ + (91, 'English'), + (45, 'French'), + (25, 'Arabic') + ]``` 36. \*\*\* Use countries_data.js file create a function which create the ten most populated countries From 4d84d2c8ca1b5002c439e4a813ec6af4025f60fd Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Fri, 10 Jan 2020 07:18:44 +0300 Subject: [PATCH 54/54] find example fix added the output to the example --- 09_Day/09_day_higher_order_functions.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/09_Day/09_day_higher_order_functions.md b/09_Day/09_day_higher_order_functions.md index 407579c..58af802 100644 --- a/09_Day/09_day_higher_order_functions.md +++ b/09_Day/09_day_higher_order_functions.md @@ -345,6 +345,7 @@ const scores = [ const score = scores.find((user) => { return user.score > 80 }) +console.log(score) // { name: "Asabeneh", score: 95 } ``` ### some @@ -581,4 +582,4 @@ console.log(users); // sorted ascending 🎉 CONGRATULATIONS ! 🎉 -[<< Day 8](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/08_Day/08_day_objects.md) | [Day 10 >>](#) \ No newline at end of file +[<< Day 8](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/08_Day/08_day_objects.md) | [Day 10 >>](#)