Menu
CoddyTech

Usuwanie notatki

Część sekcji Podstawy Node.js ścieżki Node.js w Coddy. Lekcja 15 z 33.

done 2 powinno usunąć notatkę 2, a użytkownicy wpisują cokolwiek po done.

Argumenty są ciągami znaków: Number('2') to 2, a Number('two') to NaN. Number.isInteger odrzuca NaN i 2.5 w jednym teście; następnie sprawdź zakres. Listy liczą elementy od 1, a tablice od 0, więc notatka n znajduje się pod indeksem n - 1, a splice(i, 1) ją usuwa.

// node seat.js 4
const seat = Number(process.argv[2]);
if (!Number.isInteger(seat) || seat < 1 || seat > 30) {
    console.error(`No seat ${process.argv[2]}`);
    process.exit(1);
}
console.log(`Row ${Math.ceil(seat / 6)}`);
challenge icon

Wyzwanie

Łatwy

Gdy kończysz zadanie, oznaczasz je jako wykonane i znika ono z listy. Dodaj polecenie done, które usuwa notatkę o podanym numerze.

  1. W pliku notes.js dodaj polecenie done. Słowo po done to numer notatki, taki jak wyświetlany przez list, więc notatka 1 to pierwsza notatka. To słowo jest przekazywane jako ciąg znaków.
  2. Usuń tę notatkę ze schowka, a następnie zapisz notatki w pliku notes.json, tak samo jak zapisuje je polecenie add. Notatka 1 znajduje się pod indeksem 0 tablicy. Kod usuwający notatkę możesz umieścić w notes.js lub jako metodę w store.js.
  3. Wypisz Done: , a po nim tekst usuniętej notatki. Gdy notatkami są Buy milk, Call Ada i Water the plants, polecenie node notes.js done 1 wypisuje:
    Done: Buy milk
    Następnie w pliku notes.json pozostają tylko Call Ada i Water the plants. Polecenie done 3 usuwa Water the plants.
  4. Jeśli słowo nie jest numerem notatki, niczego nie zmieniaj. Wypisz No note , a po nim to słowo, na stderr, i zakończ działanie z kodem 1. Dotyczy to słowa takiego jak abc, 0, liczby dziesiętnej, takiej jak 2.5, oraz liczby większej niż liczba notatek, na przykład 9, gdy są trzy notatki. Polecenie node notes.js done abc wypisuje na czerwono:
    No note abc

Wypróbuj: wpisz list w polu po $ node notes.js, aby zobaczyć swoje notatki i ich numery. Wpisz done 1, a potem ponownie list: pierwsza notatka zniknie, a pozostałe przesuną się o jeden numer w górę. Następnie wpisz done abc: zobaczysz na czerwono No note abc, a polecenie zakończy działanie z kodem 1; list pokaże te same notatki co wcześniej.

Spróbuj swoich sił

// Twoje narzędzie do notatek zaczyna się tutaj.
import { rmSync } from 'node:fs';
import path from 'node:path';
import { formatNote } from './format.js';
import stats from './legacy/stats.cjs';
import store from './store.js';

const [command, ...words] = process.argv.slice(2);
const text = words.join(' ');

if (command === 'add') {
    const n = store.add(text);
    console.log(`Saved note ${n}.`);
} else if (command === 'list') {
    const owner = process.env.NOTES_OWNER ?? 'you';
    console.log(`Notes for ${owner}`);
    if (store.notes.length === 0) {
        console.log('No notes yet');
    }
    store.notes.forEach((note, i) => console.log(formatNote(i + 1, note)));
} else if (command === 'where') {
    const file = path.join(process.cwd(), 'notes.json');
    console.log(file);
    console.log(path.basename(file));
} else if (command === 'stats') {
    console.log(`${store.notes.length} notes, ${stats.countWords(store.notes)} words`);
} else if (command === 'clear') {
    rmSync('notes.json', { force: true });
    console.log('Deleted notes.json');
} else {
    if (command) {
        console.error(`Unknown command: ${command}`);
    }
    console.error('Usage: node notes.js <command> [words]');
    process.exit(1);
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy Node.js

Poćwicz samodzielnie: Edytor online Express