< div align = "center" >
< h1 > 30 Days Of JavaScript: Arrays< / h1 >
< a class = "header-badge" target = "_blank" href = "https://www.linkedin.com/in/asabeneh/" >
< img src = "https://img.shields.io/badge/style--5eba00.svg?label=LinkedIn&logo=linkedin&style=social" >
< / a >
< a class = "header-badge" target = "_blank" href = "https://twitter.com/Asabeneh" >
< img alt = "Twitter Follow" src = "https://img.shields.io/twitter/follow/asabeneh?style=social" >
< / a >
< sub > Author:
< a href = "https://www.linkedin.com/in/asabeneh/" target = "_blank" > Asabeneh Yetayeh< / a > < br >
< small > January, 2020< / small >
< / sub >
< / div >
[<< Gün 4 ](../04_Day_Conditionals/04_day_conditionals.md ) | [Gün 6 >> ](../06_Day_Loops/06_day_loops.md )
![Day 5 ](../../images/banners/day_1_5.png )
- [📔 Gün 5 ](#-day-5 )
- [Diziler ( Array ) ](#arrays )
- [Boş bir dizi nası l oluşturulur ](#boş-bir-dizi-nası l-oluşturulur )
- [Değerlere sahip bir dizi nası l oluşturulur ](#değerlere-sahip-bir-dizi-nası l-oluşturulur )
- [split kullanarak dizi oluşturmak ](#split-kullanarak-dizi-oluşturmak )
- [index kullanarak dizi elemanları na ulaşmak ](#index-kullanarak-dizi-elemanları na-ulaşmak )
- [Dizi elemanları nı düzenlemek ](#dizi-elemanları nı -düzenlemek )
- [Dizileri manüple edebilecek metotlar ](#dizileri-manüple-edebilecek-metotlar )
- [Dizi Constructor'ı ( yapı cı metot ) ](#dizi-constructor )
- [fill ile statik değerler yaratmak ](#fill-ile-statik-değerler-yaratmak )
- [concat kullanarak dizileri birleştirmek ](#concat-kullanarak-dizileri-birleştirmek )
- [Dizi uzunluğuna ulaşmak ( length ) ](#dizi-uzunluğuna-ulaşmak )
- [arr dizisinin içindeki index'e ulaşmak ](#arr-dizisinin-içindeki-indexe-ulaşmak )
- [Dizinin içindeki son index'e ulaşmak ](#dizinin-içindeki-son-indexe-ulaşmak )
- [Diziyi kontrol etmek ](#diziyi-kontrol-etmek )
- [Diziyi string'e çevirmek ](#diziyi-stringe-çevirmek )
- [Dizi elemanları nı Joinlemek ](#dizi-elemanları nı -joinlemek )
- [Dizi elemanları nı Slice etmek ( kesmek ) ](#dizi-elemanları nı -slice-etmek )
- [Dizlerde Splice metodu ](#dizilerde-splice-metodu )
- [push kullanarak diziye eleman eklemek ](#push-kullanarak-diziye-eleman-eklemek )
- [pop kı llanarak diziden eleman çı karmak ](#pop-kullanarak-diziden-eleman-çı karmak )
- [Dizinin en başı ndan eleman kaldı rmak ](#dizinin-en-başı ndan-eleman-kaldı rmak )
- [Dizinin en başı na eleman ekleme ](#dizinin-en-başı na-eleman-eklemek )
- [Dizi sı rası nı ters'e çevirmek ](#dizi-sı rası nı -terse-çevirmek )
- [Dizi elemanları nı sı ralamak ](#dizi-elemanları nı -sı ralamak )
- [Dizi içinde Diziler ](#dizi-içinde-diziler )
- [💻 Egzersizler ](#-Egzersizler )
- [Egzersiz: Seviye 1 ](#egzersiz-seviye-1 )
- [Egzersiz: Seviye 2 ](#egzersiz-seviye-2 )
- [Egzersiz: Seviye 3 ](#egzersiz-seviye-3 )
# 📔 Gün 5
## Diziler
Değişkenlerin aksine, diziler _Çoklu değerleri_ depolayabilirler. Dizi'deki her bir değer _index_ 'e sahiptir, ve her index _bellek adresindeki bir referans_ 'ı işaret eder. Bu _index'ler_ kullanı larak her bir değere ulaşı m sağlanabilir. Bir dizinin index'i _sı fı r_ 'dan başlar ve dizinin son elemanı nı n index'i, dizinin uzunluğundan bir eksiktir.
Bir dizi, sı ralı ve değiştirilebilirdir. Farklı veri türlerinin bir koleksiyonudur. Bir dizi, tekrar edilen elemanları n ve farklı veri türlerinin depolanması na izin verir. Bir dizi boş olabilir veya farklı veri türü değerlerine sahip olabilir.
### Boş bir dizi nası l oluşturulur
JavaScript'te birçok farklı yol ile dizi oluşturabiliriz. Bir dizi oluşturmanı n farklı yolları nı görelim.
Bir dizi değişkeni tanı mlamak için _let_ yerine _const_ kullanmak çok yaygı ndı r. Const kullanı yorsanı z, bu değişken adı nı bir daha kullanmayacağı nı z anlamı na gelir.
- Array constructor'ı ( yapı cı metot ) kullanmak
```js
// syntax
const arr = Array()
// ya da
// let arr = new Array()
console.log(arr) // []
```
- Köşeli parantez kullanmak([])
```js
// syntax
// Bu boş bir dizi oluşturmak için en çok tavsiye edilen yöntemdir
const arr = []
console.log(arr)
```
### Değerlere sahip bir dizi nası l oluşturulur
Başlangı ç değerine sahip bir dizi. _length_ özelliğini kullanarak dizinin uzuluğunu bulabiliriz.
```js
const numbers = [0, 3.14, 9.81, 37, 98.6, 100] // sayı dizisi
const fruits = ['banana', 'orange', 'mango', 'lemon'] // string dizisi, meyveler
const vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] // string dizisi, sebzeler
const animalProducts = ['milk', 'meat', 'butter', 'yoghurt'] // string dizisi, ürünler
const webTechs = ['HTML', 'CSS', 'JS', 'React', 'Redux', 'Node', 'MongDB'] // string dizisi, web teknolojileri
const countries = ['Finland', 'Denmark', 'Sweden', 'Norway', 'Iceland'] // string dizisi, ülkeler
// Diziyi ve dizinin uzunluğunu yazdı rmak
console.log('Numbers:', numbers)
console.log('Number of numbers:', numbers.length)
console.log('Fruits:', fruits)
console.log('Number of fruits:', fruits.length)
console.log('Vegetables:', vegetables)
console.log('Number of vegetables:', vegetables.length)
console.log('Animal products:', animalProducts)
console.log('Number of animal products:', animalProducts.length)
console.log('Web technologies:', webTechs)
console.log('Number of web technologies:', webTechs.length)
console.log('Countries:', countries)
console.log('Number of countries:', countries.length)
```
```sh
Numbers: [0, 3.14, 9.81, 37, 98.6, 100]
Number of numbers: 6
Fruits: ['banana', 'orange', 'mango', 'lemon']
Number of fruits: 4
Vegetables: ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot']
Number of vegetables: 5
Animal products: ['milk', 'meat', 'butter', 'yoghurt']
Number of animal products: 4
Web technologies: ['HTML', 'CSS', 'JS', 'React', 'Redux', 'Node', 'MongDB']
Number of web technologies: 7
Countries: ['Finland', 'Estonia', 'Denmark', 'Sweden', 'Norway']
Number of countries: 5
```
- Dizinin farklı veri tiplerinde elemanları olabilir.
```js
const arr = [
'Asabeneh',
250,
true,
{ country: 'Finland', city: 'Helsinki' },
{ skills: ['HTML', 'CSS', 'JS', 'React', 'Python'] }
] // arr farklı veri tipleri içerir.
console.log(arr)
```
### Split kullanarak dizi oluşturmak
Önceki bölümde gördüğümüz gibi, bir diziyi farklı şekillerde bölebilir ve diziyi değiştirebiliriz. Aşağı daki örneklere bir göz atalı m.
```js
let js = 'JavaScript'
const charsInJavaScript = js.split('')
console.log(charsInJavaScript) // ["J", "a", "v", "a", "S", "c", "r", "i", "p", "t"]
let companiesString = 'Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon'
const companies = companiesString.split(',')
console.log(companies) // ["Facebook", " Google", " Microsoft", " Apple", " IBM", " Oracle", " Amazon"]
let txt =
'I love teaching and empowering people. I teach HTML, CSS, JS, React, Python.'
const words = txt.split(' ')
console.log(words)
// metnin özel karakterleri var, sadece kelimeleri nası l alabileceğinizi düşünün
// ["I", "love", "teaching", "and", "empowering", "people.", "I", "teach", "HTML,", "CSS,", "JS,", "React,", "Python"]
```
### index kullanarak dizi elemanları na ulaşmak
Dizide elemanları n indexlerini kullanarak o elemana ulaşabiliriz. Dizinin index'i 0'dan başlar. Aşşağı daki resm her elemanı n indexini açı kça göstermektedir.
![arr index ](../images/array_index.png )
```js
const fruits = ['banana', 'orange', 'mango', 'lemon']
let firstFruit = fruits[0] // 1. eleman'a o elemanı n indexini kullanarak erişiyoruz.
console.log(firstFruit) // banana
secondFruit = fruits[1]
console.log(secondFruit) // orange
let lastFruit = fruits[3]
console.log(lastFruit) // lemon
// Son eleman devam eden örnekteki gibi hesaplanabilir
let lastIndex = fruits.length - 1
lastFruit = fruits[lastIndex]
console.log(lastFruit) // lemon
```
```js
const numbers = [0, 3.14, 9.81, 37, 98.6, 100] // sayı dizisi
console.log(numbers.length) // => dizinin uzunluğunu bilebiliriz. O da 6'dı r
console.log(numbers) // -> [0, 3.14, 9.81, 37, 98.6, 100]
console.log(numbers[0]) // -> 0
console.log(numbers[5]) // -> 100
let lastIndex = numbers.length - 1;
console.log(numbers[lastIndex]) // -> 100
```
```js
const webTechs = [
'HTML',
'CSS',
'JavaScript',
'React',
'Redux',
'Node',
'MongoDB'
] // Web teknolojilerinin Listesi
console.log(webTechs) // Dizi elemanları nı n hepsi
console.log(webTechs.length) // => dizinin uzunluğunu bilebiliriz. O da 7'dir
console.log(webTechs[0]) // -> HTML
console.log(webTechs[6]) // -> MongoDB
let lastIndex = webTechs.length - 1
console.log(webTechs[lastIndex]) // -> MongoDB
```
```js
const countries = [
'Albania',
'Bolivia',
'Canada',
'Denmark',
'Ethiopia',
'Finland',
'Germany',
'Hungary',
'Ireland',
'Japan',
'Kenya'
] // List of countries
console.log(countries) // -> Dizideki tüm ülkeler
console.log(countries[0]) // -> Albania
console.log(countries[10]) // -> Kenya
let lastIndex = countries.length - 1;
console.log(countries[lastIndex]) // -> Kenya
```
```js
const shoppingCart = [
'Milk',
'Mango',
'Tomato',
'Potato',
'Avocado',
'Meat',
'Eggs',
'Sugar'
] // Ürünler listesi
console.log(shoppingCart) // -> shoppingCart Dizisi elemanları nı n hepsi
console.log(shoppingCart[0]) // -> Milk
console.log(shoppingCart[7]) // -> Sugar
let lastIndex = shoppingCart.length - 1;
console.log(shoppingCart[lastIndex]) // -> Sugar
```
### Dizi elemanları nı düzenlemek
Bir dizi değiştirilebilir. Dizi yaratı ldı ktan sonra, elemanları n içeriklerini değiştirebilir, modifiye edebiliriz.
```js
const numbers = [1, 2, 3, 4, 5]
numbers[0] = 10 // index 0'daki 1 elemanı nı 10 elemanı olarak değiştirdik
numbers[1] = 20 // index 2'deki 2 elemanı nı 20 elemanı olarak değiştirdik
console.log(numbers) // [10, 20, 3, 4, 5]
const countries = [
'Albania',
'Bolivia',
'Canada',
'Denmark',
'Ethiopia',
'Finland',
'Germany',
'Hungary',
'Ireland',
'Japan',
'Kenya'
]
countries[0] = 'Afghanistan' // Albania yerini Afghanistan aldı
let lastIndex = countries.length - 1
countries[lastIndex] = 'Korea' // Kenya yerini Korea aldı
console.log(countries)
```
```sh
["Afghanistan", "Bolivia", "Canada", "Denmark", "Ethiopia", "Finland", "Germany", "Hungary", "Ireland", "Japan", "Korea"]
```
### Dizileri manüple edebilecek metotlar
Diziyi manüple edebilmek için farklı metotlar vardı r. Bunlar dizilerle uğraşmak için kullanı şlı yöntemlerden bazı ları dı r. Bu yöntemler: _Array, length, concat, indexOf, slice, splice, join, toString, includes, lastIndexOf, isArray, fill, push, pop, shift, unshift_
#### Dizi Constructor
Array:Bir dizi yaratmak için kullanı lı r.
```js
const arr = Array() // boş bir dizi yaratı r
console.log(arr)
const eightEmptyValues = Array(8) // sekiz tane boş değer yaratı r
console.log(eightEmptyValues) // [empty x 8]
```
#### fill ile statik değerler yaratmak
fill: Bütün dizi elemanları nı statik değerle doldurur.
```js
const arr = Array() // Boş bir dizi yaratı r
console.log(arr)
const eightXvalues = Array(8).fill('X') // 'X'değerine sahip 8 tane eleman oluşuturur.
console.log(eightXvalues) // ['X', 'X','X','X','X','X','X','X']
const eight0values = Array(8).fill(0) // '0' değerine sahip 8 tane eleman oluşturur.
console.log(eight0values) // [0, 0, 0, 0, 0, 0, 0, 0]
const four4values = Array(4).fill(4) //'4' değerine sahip 8 tane eleman oluşturur.
console.log(four4values) // [4, 4, 4, 4]
```
#### Concat kullanarak dizileri birleştirmek
concat: İki diziyi birbiri ile birleştirir.
// Çevirmen notu : concat sadece iki diziyi birleştirmez. ikiden fazla sayı da diziyi birleştirmenize izin verir.
```js
const firstList = [1, 2, 3]
const secondList = [4, 5, 6]
const thirdList = firstList.concat(secondList)
console.log(thirdList) // [1, 2, 3, 4, 5, 6]
```
```js
const fruits = ['banana', 'orange', 'mango', 'lemon'] // meyveler dizisi
const vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot'] // sebzeler dizisi
const fruitsAndVegetables = fruits.concat(vegetables) // iki diziyi birleştirdik
console.log(fruitsAndVegetables)
```
```sh
["banana", "orange", "mango", "lemon", "Tomato", "Potato", "Cabbage", "Onion", "Carrot"]
```
#### Dizi uzunluğuna ulaşmak
Length:Dizi uzunluğunu bildirir.
```js
const numbers = [1, 2, 3, 4, 5]
console.log(numbers.length) // -> Dizinin uzunluğu 5'tir
```
#### Arr dizisinin içindeki indexe ulaşmak
indexOf: O elemanı n dizide olup olmadı ğı nı kontrol eder.Eğer o eleman dizide mevcutsa index numarası nı , mevcut değilse -1 döner.
```js
const numbers = [1, 2, 3, 4, 5]
console.log(numbers.indexOf(5)) // -> 4
console.log(numbers.indexOf(0)) // -> -1
console.log(numbers.indexOf(1)) // -> 0
console.log(numbers.indexOf(6)) // -> -1
```
Bir dizide mevcut olup olmadı ğı nı kontrol edin.
- Listedeki elemanları kontrol edin.
```js
// dizide bir banana olup olmadı ğı nı kontrol edelim
const fruits = ['banana', 'orange', 'mango', 'lemon']
let index = fruits.indexOf('banana') // 0
if(index === -1){
console.log('This fruit does not exist in the array')
} else {
console.log('This fruit does exist in the array')
}
// This fruit does exist in the array
// Burada ayrı ca kı sa if kullanabilirz.
index === -1 ? console.log('This fruit does not exist in the array'): console.log('This fruit does exist in the array')
// dizide bir avocado olup olmadı ğı nı kontrol edelim
let indexOfAvocado = fruits.indexOf('avocado') // -1, eğer eleman dizide yoksa -1 döner
if(indexOfAvocado === -1){
console.log('This fruit does not exist in the array')
} else {
console.log('This fruit does exist in the array')
}
// This fruit does not exist in the array
```
#### Dizinin içindeki son indexe ulaşmak
lastIndexOf: Dizideki son elemanı n pozisyonunu verir. Eğer mevcutsa o elemanı n index numarası nı döner, mevcut değilse -1 döner.
```js
const numbers = [1, 2, 3, 4, 5, 3, 1, 2]
console.log(numbers.lastIndexOf(2)) // 7
console.log(numbers.lastIndexOf(0)) // -1
console.log(numbers.lastIndexOf(1)) // 6
console.log(numbers.lastIndexOf(4)) // 3
console.log(numbers.lastIndexOf(6)) // -1
```
includes:Bir dizide bir öğenin olup olmadı ğı nı kontrol etmek için kullanı lı r.Mevcut ise, true değerini döndürür, aksi takdirde false değerini döndürür.
```js
const numbers = [1, 2, 3, 4, 5]
console.log(numbers.includes(5)) // true
console.log(numbers.includes(0)) // false
console.log(numbers.includes(1)) // true
console.log(numbers.includes(6)) // false
const webTechs = [
'HTML',
'CSS',
'JavaScript',
'React',
'Redux',
'Node',
'MongoDB'
] // Web teknolojileri dizisi
console.log(webTechs.includes('Node')) // true
console.log(webTechs.includes('C')) // false
```
#### Diziyi kontrol etmek
Array.isArray: Veri tipinin bir dizi olup olmadı ğı nı kontrol etmek için kullanı lı r.
```js
const numbers = [1, 2, 3, 4, 5]
console.log(Array.isArray(numbers)) // true
const number = 100
console.log(Array.isArray(number)) // false
```
#### Diziyi stringe çevirmek
toString:Diziyi string bir ifadeye çevirir.
```js
const numbers = [1, 2, 3, 4, 5]
console.log(numbers.toString()) // 1,2,3,4,5
const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook']
console.log(names.toString()) // Asabeneh,Mathias,Elias,Brook
```
#### Dizi elemanları nı Joinlemek
join: Dizinin elemanları nı birleştirmek için kullanı lı r, join yönteminde ilettiğimiz argüman dizide birleştirilir ve bir dizi olarak döndürülür. Varsayı lan olarak bir virgül ile birleşir, ancak elemanlar arası nda birleştirilebilecek farklı dizi parametreleri iletebiliriz.
```js
const numbers = [1, 2, 3, 4, 5]
console.log(numbers.join()) // 1,2,3,4,5
const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook']
console.log(names.join()) // Asabeneh,Mathias,Elias,Brook
console.log(names.join('')) //AsabenehMathiasEliasBrook
console.log(names.join(' ')) //Asabeneh Mathias Elias Brook
console.log(names.join(', ')) //Asabeneh, Mathias, Elias, Brook
console.log(names.join(' # ')) //Asabeneh # Mathias # Elias # Brook
const webTechs = [
'HTML',
'CSS',
'JavaScript',
'React',
'Redux',
'Node',
'MongoDB'
] // List of web technologies
console.log(webTechs.join()) // "HTML,CSS,JavaScript,React,Redux,Node,MongoDB"
console.log(webTechs.join(' # ')) // "HTML # CSS # JavaScript # React # Redux # Node # MongoDB"
```
#### Dizi elemanları nı slice etmek
Slice: Bir aralı ktaki çoklu elemanları dilimler İki parametre alı r. Bu parametreler, başlangı ç ve bitiş konumları dı r. Bitiş konumunu dahil etmez.
```js
const numbers = [1,2,3,4,5]
console.log(numbers.slice()) // -> Bütün öğeyi kopyalar
console.log(numbers.slice(0)) // -> Bütün öğeyi kopyalar
console.log(numbers.slice(0, numbers.length)) // Bütün öğeyi kopyalar
console.log(numbers.slice(1,4)) // -> [2,3,4] // son elemanı dahil etmez
```
#### Dizilerde splice metodu
Splice: üç parametre alı r :başlangı ç konumu, kaldı rı lması gereken eleman sayı sı ve eklenmesi gereken eleman sayı sı .
```js
const numbers = [1, 2, 3, 4, 5]
numbers.splice()
console.log(numbers) // -> Bütün elemanları kaldı rı r
```
```js
const numbers = [1, 2, 3, 4, 5]
numbers.splice(0,1)
console.log(numbers) // ilk elemanı kaldı rı r
```
```js
const numbers = [1, 2, 3, 4, 5, 6]
numbers.splice(3, 3, 7, 8, 9)
console.log(numbers.splice(3, 3, 7, 8, 9)) // -> [1, 2, 3, 7, 8, 9] //2 eleman kaldı rdı ve yerine 3 eleman ekledi
```
#### Push kullanarak diziye eleman eklemek
Push: Dizinin sonuna eleman ekler.Varolan bir diziye eleman eklemek için push metodunu kullanı rı z.
```js
// syntax
const arr = ['item1', 'item2','item3']
arr.push('new item')
console.log(arr)
// ['item1', 'item2','item3','new item']
```
```js
const numbers = [1, 2, 3, 4, 5]
numbers.push(6)
console.log(numbers) // -> [1,2,3,4,5,6]
numbers.pop() // -> Dizinin sonundan bir eleman çı karı r.
console.log(numbers) // -> [1,2,3,4,5]
```
```js
let fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.push('apple')
console.log(fruits) // ['banana', 'orange', 'mango', 'lemon', 'apple']
fruits.push('lime')
console.log(fruits) // ['banana', 'orange', 'mango', 'lemon', 'apple', 'lime']
```
#### pop kı llanarak diziden eleman çı karmak
pop: Dizinin sonundaki elemanı siler.
```js
const numbers = [1, 2, 3, 4, 5]
numbers.pop() // -> Sondaki elemanı siler
console.log(numbers) // -> [1,2,3,4]
```
#### Dizinin en başı ndan eleman kaldı rmak
shift: Dizinin en başı ndaki elemanı siler.
```js
const numbers = [1, 2, 3, 4, 5]
numbers.shift() // -> baştan bir elemanı kaldı rı r.
console.log(numbers) // -> [2,3,4,5]
```
#### Dizinin en başı na eleman eklemek
unshift: Dizinin başı na dizi elemanı ekler.
```js
const numbers = [1, 2, 3, 4, 5]
numbers.unshift(0) // -> en başa eleman ekler
console.log(numbers) // -> [0,1,2,3,4,5]
```
#### Dizi sı rası nı terse çevirmek
reverse: Dizi sı ralaması nı terse çevirir.
```js
const numbers = [1, 2, 3, 4, 5]
numbers.reverse() // -> ters dizi sı rası
console.log(numbers) // [5, 4, 3, 2, 1]
numbers.reverse()
console.log(numbers) // [1, 2, 3, 4, 5]
```
#### Dizi elemanları nı sı ralamak
sort: Dizi elemanları nı alfabetik sı rada düzenleyin.Sort call back fonksyonu alı r, sort'un call back fonksiyonu ile nası l kullandı ğı mı zı ilerleyen bölümlerde göreceğiz.
```js
const webTechs = [
'HTML',
'CSS',
'JavaScript',
'React',
'Redux',
'Node',
'MongoDB'
]
webTechs.sort()
console.log(webTechs) // ["CSS", "HTML", "JavaScript", "MongoDB", "Node", "React", "Redux"]
webTechs.reverse() // sortladı ktan sonra reverse edebiliriz.
console.log(webTechs) // ["Redux", "React", "Node", "MongoDB", "JavaScript", "HTML", "CSS"]
```
### Dizi içinde diziler
Diziler farklı veri tiplerinde elemanları ve yeni bir dizi de depolayabilirler Şimdi dizi içinde bir dizi tanı mlayalı m.
```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"]
```
🌕 Çalı şkansı nı z ve zaten çok şey başardı nı z. 5. gün zorlukları nı yeni tamamladı nı z ve mükemmelliğe giden yolda 5 adı m öndesiniz. Şimdi beyniniz ve kası nı z için bazı egzersizler yapı n.
## 💻 Egzersizler
### Egzersiz: Seviye 1
```js
const countries = [
'Albania',
'Bolivia',
'Canada',
'Denmark',
'Ethiopia',
'Finland',
'Germany',
'Hungary',
'Ireland',
'Japan',
'Kenya'
]
const webTechs = [
'HTML',
'CSS',
'JavaScript',
'React',
'Redux',
'Node',
'MongoDB'
]
```
1. _boş_ bir dizi yaratı n;
2. Eleman sayı sı 5'ten fazla olan bir dizi yaratı n.
3. Yarattı ğı nı z dizinin uzunluğunu bulun ( length ).
4. Dizinizdeki ilk elemanı , ortadaki elemanı ve sondaki elemanı bulun.
5. _mixedDataTypes_ adı nda bir dizi yaratı n,dizinin içine farklı veri tiplerinde elemanlar koyun ve bu dizinin uzunluğunu bulun. Dizinin uzunluğu 5'ten büyük olmalı dı r.
6. ItCompanies adlı bir dizi değişkeni oluşturun ve Facebook, Google, Microsoft, Apple, IBM, Oracle ve Amazon'a başlangı ç değerleri atayı n.
7. _console.log()_ kullanarak dizinizi yazdı rı n.
8. Dizinin içindeki şirketlerin sayı sı n yazdı rı n.
9. Dizinin içindeki ilk, ortadaki ve son elemanı yazdı rı n.
10. Dizideki her şirketi yazdı rı n.
11. Her bir şirketin adı nı tek tek büyük harfleri ile değişterin ( ör: facebook -> FACEBOOK) ve her birini yazdı rı n.
12. Diziyi bir cümle gibi yazdı rı n: Facebook, Google, Microsoft, Apple, IBM,Oracle and Amazon are big IT companies.
13. itCompanies dizisinde belirli bir şirketin olup olmadı ğı nı kontrol edin. Varsa şirketi geri döndürün, aksi takdirde _not found_ geri döndürün.
14. Birden fazla 'o' harfi içeren şirketleri filter metodunu kullanmadan filtreleyin.
15. _sort()_ metodunu kullanarak diziyi sı ralayı n.
16. _reverse()_ metodunu kullanarak diziyi tersine çevirin.
17. Diziden ilk 3 şirketi dilimleyin ( Slice edin ).
18. Diziden son 3 şirketi dilimleyin ( Slice edin ).
19. Ortadaki IT şirketini ya da şirketlerini diziden dilimleyin ( Slice edin ).
20. İlk IT şirketini diziden kaldı rı n.
21. Ortadaki IT şirketini ya da şirketlerini diziden kaldı rı n.
22. Sondaki IT şirketini diziden kaldı rı n.
23. Bütün IT şirketlerini kaldı rı n.
### Egzersiz: Seviye 2
1.Ayrı bir country.js dosyası oluşturun ve country dizisini bu dosyaya kaydedin, ayrı bir web_techs.js dosyası oluşturun ve webTechs dizisini bu dosyaya kaydedin. Daha sonra Main.js dosyası ndan her iki dosyaya da erişim sağlayı n.
1. Önce bütün noktalama işaretlerini kaldı rı n ve ve string ifadeyi dizi olarak değiştirin ve dizideki kelime sayı sı nı sayı n.
```js
let text =
'I love teaching and empowering people. I teach HTML, CSS, JS, React, Python.'
console.log(words)
console.log(words.length)
```
```sh
["I", "love", "teaching", "and", "empowering", "people", "I", "teach", "HTML", "CSS", "JS", "React", "Python"]
13
```
1. Aşşağı daki alı şveriş sepetindeki elemanları ekleyin, silin , düzenleyin.
```js
const shoppingCart = ['Milk', 'Coffee', 'Tea', 'Honey']
```
- Eğer alı şveriş sepetine zaten 'Meat' eklenmemişse en başa ekleyin.
- Eğer alı şveriş sepetine zaten 'Sugar' eklenmemişse en sona ekleyin.
- Eğer bala alerjiniz varsa 'Honey' elemanı nı diziden silin.
- 'Tea' elemanı nı 'Green Tea' olarak güncelleyin.
1. countries dizisinde 'Ethiopia' olup olmadı ğı nı kontrol edin. Eğer varsa 'ETHIOPIA' yazdı rı n. eğer yoksa bunu countries dizisine ekleyin.
2. webTechs dizisinde Sass olup olmadı ğı nı kontrol edin eğer varsa 'Sass is a CSS preprocess' yazdı rı n. Eğer yoksa diziye Sass elemanı nı ekleyip diziyi yazdı rı n
4. Aşağı daki iki değişkeni birleştirin ve bir fullStack değişkeninde atayı n.
```js
const frontEnd = ['HTML', 'CSS', 'JS', 'React', 'Redux']
const backEnd = ['Node','Express', 'MongoDB']
console.log(fullStack)
```
```sh
["HTML", "CSS", "JS", "React", "Redux", "Node", "Express", "MongoDB"]
```
### Egzersiz: Seviye 3
1. Aşağı daki dizide 10 öğrencinin yaşı vardı r:
```js
const ages = [19, 22, 19, 24, 20, 25, 26, 24, 25, 24]
```
- Diziyi sı ralayı n ve en küçük ve en büyük yaşı bulun
- Medyan yaşı bulun(dizinin ortası ndaki eleman ama ortada iki eleman varsa elemanlar ikiye bölünür)
- Ortalama yaşı bulun(tüm elemanlar eleman sayı sı na bölünür)
- Yaş aralı ğı nı bulun (maks - min)
- _abs()_ metodunu kullanarak (min - ortalama) ve (maks - ortalama) değerlerini karşı laştı rı n,
1. [countries array ](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js ) dizisinden ilk 10 ülkeyi dilimleyin ( Slice edin )
1. [countries array ](https://github.com/Asabeneh/30DaysOfJavaScript/tree/master/data/countries.js ) dizisinden ortadaki ülkeleri bulun.
2. countries dizisini çift ise iki eşit diziye bölün. countries dizisi çift değilse, ilk yarı için bir ülke fazla olarak bölün
🎉 TEBRİKLER ! 🎉
[<< Gün 4 ](../04_Day_Conditionals/04_day_Conditionals.md ) | [Gün 6 >> ](../06_Day_Loops/06_day_loops.md )