-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
146 lines (124 loc) · 5.1 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// html elemanları seçildi
const wrapper = document.querySelector('.wrapper');
const popBtn = document.querySelector('.pop');
const langBtn = document.querySelector('.lang');
// buttonlara eventlistener atandı
popBtn.addEventListener('click', displayPopulation);
langBtn.addEventListener('click', displayLanguages);
// populasyana basıldığında çalışacak fonksiyon
function displayPopulation(){
wrapper.innerHTML='';
// poplasyonların tutuldu array
let popArr = [];
// popArr deki tüm sayıların toplandığı array
let sumArr = [];
// for döngüsü ile anadizindeki eleman sayısı kadar ülke ismi ve popülasyon sayısını push ediyoruz
for(let i=0; i<countries_data.length; i++){
let eleman = {
name : countries_data[i].name,
population: countries_data[i].population
}
popArr.push(eleman);
// sumArr oluşturma mantığı .reduce() kullanırken objeden ziyade sadece array içermesiyle kolaylık sağlaması
sumArr.push(countries_data[i].population)
}
// .sort() ile popülasyonlar büyükten küçüğe sıralanıyor
let sirali = popArr.sort((a,b)=>b.population - a.population )
// toplam nüfüsa oranlamak için total değişkeni atadık
let total;
for(let i=0; i<sumArr.length; i++){
// .reduce() ile sumArr deki tüm nüfusları topladık getSum fonksiyonunu çalıştırarak
let sum = sumArr.reduce(getSum, 0);
total = sum;
}
function getSum(total, num){
return total + num;
}
// ilk 10 ülkenin nüfusları büyükten küçüğe alt alta yazdırıyor
for(let i=0; i<10; i++){
let percentage = Math.round(sirali[i].population/total*100); // yüzdesel olarak yazmak için o ülkenin nüfusu toplam nufüsa bölünüp 100 ile çarpılıyor
let p = document.createElement('p');
p.style.width='300px';
p.style.color='purple';
p.textContent =`${sirali[i].name}`;
wrapper.append(p);
let div = document.createElement('div');
div.style.width='100%';
div.style.marginLeft='100px';
div.classList.add('progress');
div.role='progressbar';
let divProg = document.createElement('div');
divProg.classList.add('progress-bar');
divProg.style.width=`${percentage}%`;
divProg.style.backgroundColor='blue';
divProg.textContent=`${percentage}%`;
div.append(divProg);
let item = document.createElement('div');
item.style.display='flex';
item.style.marginTop='10px';
item.style.padding='10px 20px';
item.style.borderRadius='5px';
item.style.backgroundColor='bisque';
item.append(p);
item.append(div);
wrapper.append(item);
}
}
// languages butonuna basıldğında çalışacak fonksiyon
function displayLanguages(){
wrapper.innerHTML='';
// toplam konuşulan dillerin pushladığı boş array oluşturuldu
let totalLangs = [];
for(let i=0; i<countries_data.length; i++){
// ülkelerin 1 den fazla konuşulan dili olduğu için her ülkenin içlerindek dili tek tek pushlanıyor
for(let j=0; j<countries_data[i].languages.length; j++){
totalLangs.push(countries_data[i].languages[j])
}
}
// boş bir obje oluşturduk
let langs = {};
for (let i = 0; i < totalLangs.length; i++) {
// toplam konuşulan diller eğer 1 den fazla ise if döngüsüne girip ++ ile 1 artıyor
let langNum = totalLangs[i];
if (langs[langNum]) {
langs[langNum]++;
}
else {
langs[langNum] = 1;
}
}
// konuşulan diller en çoktan en aza doğru sıralanıyor
// object.keys kullanma nedeni langs objesine langNum ile dil ve konuşulma sayısı yer alıyor .keys kullanarak sadece konuşulma sayısına ulaşılıyor
let sortedLangs = Object.keys(langs).sort((a, b) => langs[b] - langs[a]);
// en çok konuşulan 10 dili yazdıran döngü
for (let i = 0; i < 10; i++) {
let lang = sortedLangs[i];
let langCount = langs[lang];
let p = document.createElement('p');
p.style.width='300px';
p.style.color='purple';
p.textContent =`${lang}`;
wrapper.append(p);
let div = document.createElement('div');
div.style.width='100%';
div.style.marginLeft='100px';
div.style.backgroundColor='bisque';
div.classList.add('progress');
div.role='progressbar';
let divProg = document.createElement('div');
divProg.classList.add('progress-bar');
divProg.style.width=`${langCount}%`;
divProg.style.backgroundColor='blue';
divProg.textContent=`${langCount}`;
div.append(divProg);
let item = document.createElement('div');
item.style.display='flex';
item.style.marginTop='10px';
item.style.padding='10px 20px';
item.style.borderRadius='5px';
item.style.backgroundColor='bisque';
item.append(p);
item.append(div);
wrapper.append(item);
}
}