Liste sayfalama bilgisi
Web / frontend · Zorluk 2/5 · JavaScript · 30 satırKöken: Kurgu
Görev
Yapay zekâdan istenen
Ürün listesinin sayfalama çubuğu için getPageInfo(requestedPage, totalItems, pageSize) yaz. requestedPage adresten gelen tam sayıdır; aralık dışındaysa en yakın geçerli sayfaya çek. pageSize pozitif tam sayıdır. Döndür: geçerli sayfa, toplam sayfa, 11–20 / 45 biçiminde etiket, önceki ve sonraki sayfa var mı, ve en çok 5 sayfa numarası (geçerli sayfa mümkünse ortada). Hiç ürün yoksa tek bir boş sayfa olur, etiketi 0–0 / 0.
Teslim notu
Yapay zekâ kodu teslim ederken şunu yazdı:
“Sayfa numarası her zaman geçerli aralığa çekiliyor, boş liste de ele alındı. Etiket ve sayfa numaraları her durumda doğru.”
Yapay zekânın yazdığı kod
JavaScript30 satırHatalı bulduğun satırları işaretle; her işarete önem seç ve nedenini bir cümleyle yaz.
Satıra tıkla ya da dokun. Klavyede satıra gidip Enter'a bas.
Önem nasıl seçilir
- KritikVeri kaybı, güvenlik açığı ya da para kaybı
- ÖnemliGörevin istediği bir durumda kullanıcı yanlış sonuç alır
- KüçükGörevin dışında kalan nadir bir uç durum ya da okunurluk
Test konusunda önem, testin yakalamadığı hatalı uygulamanın etkisine göre belirlenir.
Gerekçe puanlanmaz; sonuçta örnek cevapla karşılaştırırsın.
const VISIBLE_PAGES = 5;function visiblePages(page, totalPages) { const half = Math.floor(VISIBLE_PAGES / 2); const start = Math.max( 1, Math.min(page - half, totalPages - VISIBLE_PAGES + 1), ); const end = Math.min(totalPages, start + VISIBLE_PAGES - 1); const pages = []; for (let number = start; number <= end; number += 1) { pages.push(number); } return pages;}export function getPageInfo(requestedPage, totalItems, pageSize) { const totalPages = Math.max(1, Math.floor(totalItems / pageSize)); const page = Math.min(Math.max(requestedPage, 1), totalPages); const firstItem = totalItems === 0 ? 0 : (page - 1) * pageSize + 1; const lastItem = Math.min(page * pageSize, totalItems); return { page, totalPages, label: `${firstItem}–${lastItem} / ${totalItems}`, hasPrevious: page > 1, hasNext: page < totalPages, pages: visiblePages(page, totalPages), };}Kanıtlayan test
Doğru seçenek, bu kodda başarısız olan, yani hatayı ortaya çıkaran testtir.
Gönderince sayaca yedi bilgi gider; gerekçe metnin cihazında kalır. Veriler