Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
282 changes: 234 additions & 48 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
const { fifaData } = require('./fifa.js')

const { fifaData } = require("./fifa.js");

/* Görev 1:
Verilen datayı parçalayarak aşağıdaki verileri (console.log-ing) elde ederek pratik yapın.
Expand All @@ -8,14 +7,58 @@ const { fifaData } = require('./fifa.js')

//(a) 2014 Dünya kupası Finali Evsahibi takım ismi (dizide "Home Team Name" anahtarı)

// Year özelliği 2014 ve Stage özelliği "Final" olan maçları sececegiz. Yani 2014 yilinda oynanan finalleri filtreleyecegiz.

const Finals2014 = fifaData.filter(
(mac) => mac.Stage === "Final" && mac.Year === 2014
);

console.log("GÖREV 1-A: 2014 DÜNYA KUPASI FINALI MAÇI BİLGİLERİ: ", Finals2014);
console.log(
"GÖREV 1-A: 2014 DÜNYA KUPASI FINALI EVSAHIBI TAKIM ISMI: ",
Finals2014[0]["Home Team Name"]
);

// Eger filtreleyerek olusturdugumuz yeni dizide herhangi bir veri yoksa mac bulunamadi, var ise o verinin Home Team Name'ini yazdiracagiz

//(b) 2014 Dünya kupası Finali Deplasman takım ismi (dizide "Away Team Name" anahtarı)

console.log(
"GÖREV 1-B: 2014 DÜNYA KUPASI FINALI DEPLASMAN TAKIM ISMI: ",
Finals2014[0]["Away Team Name"]
);

//(c) 2014 Dünya kupası finali Ev sahibi takım golleri (dizide "Home Team Goals" anahtarı)

console.log(
"GÖREV 1-C: 2014 DÜNYA KUPASI FINALI EV SAHIBI TAKIM GOLLERI: ",
Finals2014[0]["Home Team Goals"]
);

//(d)2014 Dünya kupası finali Deplasman takım golleri (dizide "Away Team Goals" anahtarı)

console.log(
"GÖREV 1-D: 2014 DÜNYA KUPASI FINALI DEPLASMAN TAKIM GOLLERI: ",
Finals2014[0]["Away Team Goals"]
);

//(e) 2014 Dünya kupası finali kazananı*/

if (Finals2014[0]["Away Team Goals"] > Finals2014[0]["Home Team Goals"]) {
console.log(
"GÖREV 1-E: 2014 DÜNYA KUPASI FINALI KAZANAN TAKIM: ",
Finals2014[0]["Away Team Name"]
);
} else if (
Finals2014[0]["Home Team Goals"] > Finals2014[0]["Away Team Goals"]
) {
console.log(
"GÖREV 1-E: 2014 DÜNYA KUPASI FINALI KAZANAN TAKIM: ",
Finals2014[0]["Home Team Name"]
);
} else {
console.log("GÖREV 1-E: 2014 DÜNYA KUPASI FINALI BERABERE");
}

/* Görev 2:
Finaller adlı fonksiyonu kullanarak aşağıdakileri uygulayın:
Expand All @@ -25,12 +68,12 @@ const { fifaData } = require('./fifa.js')
💡 İPUCU - verilen data içindeki nesnelerin(objects) "Stage" anahtarına bakmalısınız
*/

function Finaller(/* kodlar buraya */) {
/* kodlar buraya */
function Finaller(maclar) {
const finals = maclar.filter((mac) => mac.Stage === "Final");
return finals;
}


console.log("GÖREV 2: FİNALLER ", Finaller(fifaData));

/* Görev 3:
Bir higher-order fonksiyonu olan Yillar isimli fonksiyona aşağıdakileri uygulayın:
Expand All @@ -39,27 +82,44 @@ function Finaller(/* kodlar buraya */) {
3. Finaller data setindeki tüm yılları içeren "years" adındaki diziyi(array) döndürecek
*/

function Yillar(/* kodlar buraya */) {

/* kodlar buraya */
function Yillar(maclarDizisi, finallerCallback) {
const finaller = finallerCallback(maclarDizisi);

console.log("*********FİNALLER:********** ", finaller);

/* for(let i = 0; i < finaller.length; i++) {
console.log("*********YILLAR:********** ", finaller[i].Year);
} */

const yillar = finaller.map((mac) => mac.Year);

return yillar;
}

console.log("GÖREV 3: YILLAR ", Yillar(fifaData, Finaller));

/* Görev 4:
Bir higher-order fonksiyonunu olan Kazananlar isimli fonksiyona aşağıdakileri uygulayın:
1. fifaData dizisini(array) fonksiyonunun birinci parametresi olarak alacak
2. Görev 2'de yazdığınız Finaller fonksiyonunu, geriçağırım(callback) olarak fonksiyonun ikinci parametresi olarak alacak
3. Her final maçının kazananını (evsahibi ya da deplasman) belirleyecek
💡 İPUCU: Beraberlikler(ties) için şimdilik endişelenmeyin (Detaylı bilgi için README dosyasına bakabilirsiniz.)
4. Tüm kazanan ülkelerin isimlerini içeren `kazananlar` adında bir dizi(array) döndürecek(return) */

function Kazananlar(/* kodlar buraya */) {

/* kodlar buraya */

4. Tüm kazanan ülkelerin isimlerini içeren `kazananlar` adında bir dizi(array) döndürecek(return) */

function Kazananlar(maclarDizisi, finallerCallback) {
const finaller = finallerCallback(maclarDizisi);

const kazananlar = finaller.map((mac, index) => {
if (mac["Home Team Goals"] > mac["Away Team Goals"]) {
return mac["Home Team Name"];
} else {
return mac["Away Team Name"];
}
});
return kazananlar;
}


console.log("GÖREV 4: KAZANANLAR ", Kazananlar(fifaData, Finaller));

/* Görev 5:
Bir higher-order fonksiyonu olan YillaraGoreKazananlar isimli fonksiyona aşağıdakileri uygulayın:
Expand All @@ -72,12 +132,32 @@ function Kazananlar(/* kodlar buraya */) {
💡 İPUCU: her cümlenin adım 4'te belirtilen cümleyle birebir aynı olması gerekmektedir.
*/

function YillaraGoreKazananlar(/* kodlar buraya */) {

/* kodlar buraya */
function YillaraGoreKazananlar(
maclarDizisi,
finallerCallback,
yillarCallback,
kazananlarCallback
) {
const yillar = yillarCallback(maclarDizisi, finallerCallback);

const KazananUlkeler = kazananlarCallback(maclarDizisi, finallerCallback);

//kazananUlkeler ile yillarin indexleri birbirine eşit
//ayni yilin indexi ile ayni ülkenin indexi ayni

/* for(let i = 0; i < 19; i++) {
return `${yillar[i]} yılında, ${KazananUlkeler[i]} dünya kupasını kazandı!`;
} */

return yillar.map((yil, index) => {
return `${yil} yılında, ${KazananUlkeler[index]} dünya kupasını kazandı!`;
});
}

console.log(
"GÖREV 5: YILLARA GÖRE KAZANANLAR: ",
YillaraGoreKazananlar(fifaData, Finaller, Yillar, Kazananlar)
);

/* Görev 6:
Bir higher order fonksiyonu olan `OrtalamaGolSayisi` isimli fonksiyona aşağıdakileri uygulayın:
Expand All @@ -93,13 +173,41 @@ function YillaraGoreKazananlar(/* kodlar buraya */) {

*/

function OrtalamaGolSayisi(/* kodlar buraya */) {

/* kodlar buraya */

}
function OrtalamaGolSayisi(finallerDizisi) {
// let toplamGol = 0;

//for ile cözüm:

/* for (let i = 0; i < finallerDizisi.length; i++) {
toplamGol +=
finallerDizisi[i]["Home Team Goals"] +
finallerDizisi[i]["Away Team Goals"];
} */

//for each ile cözüm:

/* finallerDizisi.forEach((mac) => {
toplamGol += mac["Home Team Goals"] + mac["Away Team Goals"];
});
return (toplamGol / finallerDizisi.length).toFixed(2); */

//reduce ile çözüm:

const toplamGol = finallerDizisi.reduce((toplam, mac) => {
return toplam + mac["Home Team Goals"] + mac["Away Team Goals"];
}, 0); // Başlangıç değeri olarak 0 kullanılır

// Elde edilen toplam gol sayısını maç sayısına bölerek ortalama gol sayısını hesaplayalım
const ortalamaGolSayisi = toplamGol / finallerDizisi.length;

// Sonucu 2 ondalık basamağa yuvarlayıp string olarak döndürelim
return ortalamaGolSayisi.toFixed(2);
}

console.log(
"GÖREV 6: Ortalama Gol Sayısı: ",
OrtalamaGolSayisi(Finaller(fifaData))
);

/// EKSTRA ÇALIŞMALAR ///

Expand All @@ -109,48 +217,126 @@ function OrtalamaGolSayisi(/* kodlar buraya */) {
İpucu: "takım kısaltmaları" (team initials) için datada araştırma yapın!
İpucu: `.reduce` Kullanın*/

function UlkelerinKazanmaSayilari(/* kodlar buraya */) {

/* kodlar buraya */

function UlkelerinKazanmaSayilari(fifaDataArray, takimKisaltmalari) {
//final setini olusturalim:
const finaller = fifaDataArray.filter((mac) => mac.Stage === "Final");

const kazanmaObj = finaller.reduce((toplamKazanma, mac) => {
const homeTeam = mac["Home Team Initials"];
const awayTeam = mac["Away Team Initials"];

const homeTeamGoals = mac["Home Team Goals"];
const awayTeamGoals = mac["Away Team Goals"];

console.log(toplamKazanma);

if (homeTeamGoals > awayTeamGoals) {
if (toplamKazanma[homeTeam]) {
toplamKazanma[homeTeam] = toplamKazanma[homeTeam] + 1;
} else {
toplamKazanma[homeTeam] = 1;
}
} else {
if (toplamKazanma[awayTeam]) {
toplamKazanma[awayTeam] = toplamKazanma[awayTeam] + 1;
} else {
toplamKazanma[awayTeam] = 1;
}
}
return toplamKazanma;
}, {});
return kazanmaObj[takimKisaltmalari];
}


console.log("BONUS 1: ", UlkelerinKazanmaSayilari(fifaData, "BRA"));

/* BONUS 2:
EnCokGolAtan() isminde bir fonksiyon yazın, `data` yı parametre olarak alsın ve Dünya kupası finallerinde en çok gol atan takımı döndürsün */

function EnCokGolAtan(/* kodlar buraya */) {

/* kodlar buraya */

function EnCokGolAtan(fifaDataArray, takimKisaltmalari) {
//final setini olusturalim:
const finaller = fifaDataArray.filter((mac) => mac.Stage === "Final");

const kazanmaObj = finaller.reduce((toplamKazanma, mac) => {
const homeTeam = mac["Home Team Initials"];
const awayTeam = mac["Away Team Initials"];

const homeTeamGoals = mac["Home Team Goals"];
const awayTeamGoals = mac["Away Team Goals"];

console.log(toplamKazanma);

if (toplamKazanma[homeTeam]) {
toplamKazanma[homeTeam] = toplamKazanma[homeTeam] + homeTeamGoals;
} else {
toplamKazanma[homeTeam] = homeTeamGoals;
}
if (toplamKazanma[awayTeam]) {
toplamKazanma[awayTeam] = toplamKazanma[awayTeam] + awayTeamGoals;
} else {
toplamKazanma[awayTeam] = awayTeamGoals;
}
return toplamKazanma;
}, {});

const sirala = Object.keys(kazanmaObj).sort((a, b) => {
return kazanmaObj[b] - kazanmaObj[a];
});
return sirala[0];
}

console.log("BONUS 2: En Cok Gol Ata Takım: ", EnCokGolAtan(fifaData));

/* BONUS 3:
EnKotuDefans() adında bir fonksiyon yazın, `data` yı parametre olarak alsın ve Dünya kupasında finallerinde en çok golü yiyen takımı döndürsün*/

function EnKotuDefans(/* kodlar buraya */) {

/* kodlar buraya */

function EnKotuDefans(fifaDataArray, takimKisaltmalari) {
//final setini olusturalim:
const finaller = fifaDataArray.filter((mac) => mac.Stage === "Final");

const kazanmaObj = finaller.reduce((toplamKazanma, mac) => {
const homeTeam = mac["Home Team Initials"];
const awayTeam = mac["Away Team Initials"];

const homeTeamGoals = mac["Home Team Goals"];
const awayTeamGoals = mac["Away Team Goals"];

console.log(toplamKazanma);

if (toplamKazanma[homeTeam]) {
toplamKazanma[homeTeam] = toplamKazanma[homeTeam] + awayTeamGoals;
} else {
toplamKazanma[homeTeam] = awayTeamGoals;
}
if (toplamKazanma[awayTeam]) {
toplamKazanma[awayTeam] = toplamKazanma[awayTeam] + homeTeamGoals;
} else {
toplamKazanma[awayTeam] = homeTeamGoals;
}
return toplamKazanma;
}, {});

const sirala = Object.keys(kazanmaObj).sort((a, b) => {
return kazanmaObj[b] - kazanmaObj[a];
});
return sirala[0];
}

console.log("BONUS 3: En Kotu Defans Takım: ", EnKotuDefans(fifaData));

/* Hala vaktiniz varsa, README dosyasında listelenen hedeflerden istediğinizi aşağıdaki boşluğa yazabilirsiniz. */


/* Bu satırın aşağısındaki kodları lütfen değiştirmeyin */
function sa(){
console.log('Kodlar çalışıyor');
return 'as';
function sa() {
console.log("Kodlar çalışıyor");
return "as";
}
sa();
module.exports = {
sa,
Finaller,
Yillar,
Kazananlar,
YillaraGoreKazananlar,
OrtalamaGolSayisi
}
sa,
Finaller,
Yillar,
Kazananlar,
YillaraGoreKazananlar,
OrtalamaGolSayisi,
};
Loading