Node.js
Birleştirme
Tüm parçaları birleştirerek çalışan bir CLI uygulaması yazarsın.
Tüm parçaları birleştir
Son ders: tüm parçaları birleştirip çalışan bir uygulama elde ediyoruz. addTask, completeTask, saveTasks ve loadTasks fonksiyonları hazır. Şimdi bunları bir akışla bağlayacağız.
Akış şöyle: görev ekle, birini tamamla, kaydet, sonra diziyi sıfırla ve dosyadan yeniden yükle. Bu, kalıcılığın çalıştığını kanıtlar: kaydedilen veriyi yeniden yüklediğimizde aynı görevleri görmeliyiz. Son olarak filter ile tamamlanan görevleri sayarız. tasks.filter(function(t) { return t.done; }).length bize tamamlanan sayısını verir. Önceki dersin çözümünü alıp bu akışı ekleyeceğiz.
filter ile sayma
Akışın sonunda tamamlanan görevleri saymak için filter kullanırız. tasks.filter(function(t) { return t.done; }) yalnızca done özelliği true olan görevleri içeren yeni bir dizi döndürür. .length ile bu dizinin uzunluğunu alırız.
find ilk eşleşmeyi döndürürken filter tüm eşleşmeleri döndürür. Bu küçük fark büyük bir iş yapar: find tek bir öğe, filter bir altküme verir. doneCount değişkenine bu sayıyı atayıp console.log ile yazdıracağız. Böylece uygulamanın son özetini görmüş oluruz: toplam görev ve tamamlanan görev.
Uygulama Tüm parçaları birleştir
Önceki dersin çözümünü al. Şu akışı ekle: tasks = []; ile sıfırla. addTask("Toplantı") ve addTask("Rapor") ile iki görev ekle. completeTask(1) ile ilkini tamamla. saveTasks() ile kaydet. tasks = []; ile tekrar sıfırla. loadTasks() ile yeniden yükle. console.log("Toplam: " + tasks.length) yaz. let doneCount = tasks.filter(function(t) { return t.done; }).length; ile say. console.log("Tamamlanan: " + doneCount) yaz.
Örnek çözümü göster
const path = require("path");
const fs = require("fs");
const DATA_FILE = path.join("data", "tasks.json");
function createTask(id, title) {
return { id: id, title: title, done: false };
}
let tasks = [];
tasks.push(createTask(1, "Alışveriş"));
function addTask(title) {
const id = tasks.length + 1;
tasks.push(createTask(id, title));
}
function completeTask(id) {
const task = tasks.find(function(t) { return t.id === id; });
if (task) { task.done = true; }
}
function saveTasks() {
fs.writeFileSync(DATA_FILE, JSON.stringify(tasks, null, 2));
}
function loadTasks() {
try {
const raw = fs.readFileSync(DATA_FILE, "utf8");
tasks = JSON.parse(raw);
} catch (e) {
tasks = [];
}
}
addTask("E-posta");
completeTask(1);
saveTasks();
console.log("Kaydedildi");
tasks = [];
addTask("Toplantı");
addTask("Rapor");
completeTask(1);
saveTasks();
tasks = [];
loadTasks();
console.log("Toplam: " + tasks.length);
let doneCount = tasks.filter(function(t) { return t.done; }).length;
console.log("Tamamlanan: " + doneCount);
Kendini test et
-
Akış adımını sırasına eşle
- 1. addTask
- Görev ekler
- 2. completeTask
- Görevi tamamlar
- 3. saveTasks
- Dosyaya yazar
- 4. loadTasks
- Dosyadan okur
-
tasks.filter(function(t) { return t.done; }) ne döndürür?
tasks.filter(function(t) { return t.done; })
- Tamamlanan görevlerden oluşan dizi
- Görev sayısını
- Tek bir görev
- İlk görevi
Cevabı göster
Tamamlanan görevlerden oluşan dizi — filter tüm eşleşmeleri içeren dizi verir.
-
loadTasks çağrısını tamamla
tasks = [];
____();
console.log("Toplam: " + tasks.length);
Cevabı göster
tasks = [];
loadTasks();
console.log("Toplam: " + tasks.length);
Sıradaki ders: Başlangıç bölüm sınavı