Menu
CoddyTech

Eine Notiz entfernen

Teil des Abschnitts Node.js-Grundlagen der Node.js-Journey von Coddy. Lektion 15 von 33.

done 2 sollte Notiz 2 entfernen, und nach done geben die Leute beliebige Eingaben ein.

Argumente sind Zeichenketten: Number('2') ist 2 und Number('two') ist NaN. Number.isInteger weist NaN und 2.5 in einem Test zurück; danach wird der Bereich geprüft. Listen beginnen bei 1 und Arrays bei 0, daher befindet sich Notiz n am Index n - 1, und splice(i, 1) entfernt sie.

// 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

Aufgabe

Einfach

Wenn du eine Aufgabe erledigt hast, markierst du sie als abgeschlossen und sie verschwindet aus der Liste. Füge einen Befehl done hinzu, der eine Notiz anhand ihrer Nummer entfernt.

  1. Füge in notes.js einen Befehl done hinzu. Das Wort nach done ist die Nummer der Notiz, wie sie in list angezeigt wird. Notiz 1 ist also die erste Notiz. Das Wort kommt als Zeichenfolge an.
  2. Entferne diese Notiz aus dem Speicher und speichere dann die Notizen in notes.json, so wie add sie speichert. Notiz 1 befindet sich am Index 0 des Arrays. Du kannst den Entfernungscode in notes.js oder als Methode in store.js unterbringen.
  3. Gib Done: aus, gefolgt vom Text der entfernten Notiz. Bei den Notizen Buy milk, Call Ada und Water the plants gibt node notes.js done 1 Folgendes aus:
    Done: Buy milk
    notes.json enthält dann nur noch Call Ada und Water the plants. done 3 entfernt Water the plants.
  4. Wenn das Wort nicht die Nummer einer Notiz ist, ändere nichts. Gib No note gefolgt vom Wort an stderr aus und beende das Programm mit Exitcode 1. Das gilt für ein Wort wie abc, 0, eine Dezimalzahl wie 2.5 und eine Zahl, die über die letzte Notiz hinausgeht, wie 9, wenn es drei Notizen gibt. node notes.js done abc gibt Folgendes rot aus:
    No note abc

Probiere es aus: Gib list in das Feld nach $ node notes.js ein, um deine Notizen und ihre Nummern zu sehen. Gib done 1 und dann erneut list ein: Die erste Notiz ist verschwunden und die übrigen sind um eine Nummer nach oben gerückt. Gib anschließend done abc ein: Du siehst No note abc in Rot und Exitcode 1, und list zeigt dieselben Notizen wie zuvor.

Probier es selbst

// Dein Notizentool beginnt hier.
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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Node.js-Grundlagen

Übe selbstständig: Express-Playground