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)}`);Aufgabe
EinfachWenn 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.
- Füge in
notes.jseinen Befehldonehinzu. Das Wort nachdoneist die Nummer der Notiz, wie sie inlistangezeigt wird. Notiz 1 ist also die erste Notiz. Das Wort kommt als Zeichenfolge an. - Entferne diese Notiz aus dem Speicher und speichere dann die Notizen in
notes.json, so wieaddsie speichert. Notiz 1 befindet sich am Index 0 des Arrays. Du kannst den Entfernungscode innotes.jsoder als Methode instore.jsunterbringen. - Gib
Done:aus, gefolgt vom Text der entfernten Notiz. Bei den NotizenBuy milk,Call AdaundWater the plantsgibtnode notes.js done 1Folgendes aus:Done: Buy milknotes.jsonenthält dann nur nochCall AdaundWater the plants.done 3entferntWater the plants. - Wenn das Wort nicht die Nummer einer Notiz ist, ändere nichts. Gib
No notegefolgt vom Wort an stderr aus und beende das Programm mit Exitcode 1. Das gilt für ein Wort wieabc,0, eine Dezimalzahl wie2.5und eine Zahl, die über die letzte Notiz hinausgeht, wie9, wenn es drei Notizen gibt.node notes.js done abcgibt 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);
}
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
1JavaScript mit Node ausführen
Hallo, NodeDen Befehl lesenKommandozeilenargumenteBefehle3Dateien
JSON-Text und WerteEine Datei lesenJSON-Text schreibenEine Datei schreibenEine Notiz entfernenÜbe selbstständig: Express-Playground