CodeBlanks Logo Icon CodeBlanks

İş mantığı

Fonksiyonlar ve koşullu mantıkla iş kurallarını yazarsın.

İş mantığı fonksiyonları

Veri modelini kurduk; şimdi iş mantığını ekleyeceğiz. İki fonksiyon yazacağız: addTask(title) yeni görev ekler, completeTask(id) görevi tamamlanmış işaretler.

addTask otomatik id üretir: const id = tasks.length + 1;. Böylece her yeni görev bir sonraki numarayı alır. createTask ile nesneyi yapıp tasks.push ile diziye ekler. completeTask ise tasks.find ile görevi bulur ve task.done = true yapar. Bu iki fonksiyon uygulamanın çekirdek davranışını oluşturur. Önceki dersin çözümünü alıp bunları ekleyeceğiz.

find ile arama

completeTask fonksiyonu tasks.find kullanır. find dizide koşula uyan ilk öğeyi döndürür. Örnek: tasks.find(function(t) { return t.id === id; }). Bu, id'si eşleşen görevi bulur.

Bulunan görevi if (task) { task.done = true; } ile güncelleriz. if (task) kontrolü, id eşleşmezse find'in undefined döndürdüğü durumda hatayı önler. Bu, koşullu mantığın gerçek bir kullanımdır: yalnızca görev bulunduysa güncelle. Aynı deseni ileride filter ile tamamlanan görevleri saymak için de kullanacağız.

Uygulama addTask ve completeTask fonksiyonlarını ekle

Önceki dersin çözümünü al. addTask(title) fonksiyonu ekle: const id = tasks.length + 1; ile id üret, tasks.push(createTask(id, title)) ile ekle. completeTask(id) fonksiyonu ekle: tasks.find ile bul, task.done = true yap. Son satırlar hazır: addTask("E-posta"); completeTask(1); console.log(tasks[0].done);

Başlangıç kodu

index.js
const path = require("path");
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ş"));
console.log(tasks.length);

// addTask ve completeTask fonksiyonlarını ekle
// buraya yaz

addTask("E-posta");
completeTask(1);
console.log(tasks[0].done);

Örnek çözüm

index.js
const path = require("path");
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; }
}
addTask("E-posta");
completeTask(1);
console.log(tasks[0].done);

Beklenen çıktı

true

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Parçayı rolüne eşle

Kavram Anlamı
addTask Yeni görev ekler
completeTask Görevi tamamlar
tasks.find id'ye göre bulur
tasks.length + 1 Yeni id üretir

2 completeTask gövdesini tamamla

Soru
function completeTask(id) {
  const task = tasks.find(function(t) { return t.id === id; });
  if (task) { task.____ = true; }
}
Cevap
function completeTask(id) {
  const task = tasks.find(function(t) { return t.id === id; });
  if (task) { task.done = true; }
}

Açıklama: done özelliği true yapılır.

3 tasks.find ne döndürür?

index.js
tasks.find(function(t) { return t.id === 5; })
  • Tüm görevleri
  • Görev sayısını
  • Koşula uyan ilk görevi Doğru cevap
  • Yeni bir dizi

Açıklama: find koşula uyan ilk öğeyi verir.

Başlangıç bölümündeki tüm dersler