Menu
CoddyTech

Supprimer une note

Fait partie de la section Les bases de Node.js du Journey Node.js de Coddy. Leçon 15 sur 33.

done 2 doit supprimer la note 2, et les gens saisissent n’importe quoi après done.

Les arguments sont des chaînes : Number('2') vaut 2 et Number('two') vaut NaN. Number.isInteger rejette NaN et 2.5 en un seul test ; vérifie ensuite la plage. Les listes commencent à compter à partir de 1 et les tableaux à partir de 0, donc la note n se trouve à l’index n - 1, et splice(i, 1) la supprime.

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

Défi

Facile

Lorsque tu termines une tâche, tu la marques comme terminée et elle disparaît de la liste. Ajoute une commande done qui supprime une note en fonction de son numéro.

  1. Dans notes.js, ajoute une commande done. Le mot après done correspond au numéro de la note, tel que list l’affiche, donc la note 1 est la première note. Le mot arrive sous forme de chaîne.
  2. Supprime cette note du stockage, puis enregistre les notes dans notes.json, comme le fait add. La note 1 se trouve à l’index 0 du tableau. Tu peux placer le code de suppression dans notes.js ou en faire une méthode dans store.js.
  3. Affiche Done: suivi du texte de la note supprimée. Avec les notes Buy milk, Call Ada et Water the plants, node notes.js done 1 affiche :
    Done: Buy milk
    notes.json ne contient alors plus que Call Ada et Water the plants. done 3 supprime Water the plants.
  4. Si le mot ne correspond pas au numéro d’une note, ne change rien. Affiche No note suivi du mot sur stderr, puis quitte avec le code 1. Cela concerne un mot comme abc, 0, un nombre décimal comme 2.5, ainsi qu’un nombre supérieur au dernier numéro, comme 9 lorsqu’il y a trois notes. node notes.js done abc affiche ceci, en rouge :
    No note abc

Essaie : tape list dans la zone après $ node notes.js pour voir tes notes et leurs numéros. Tape done 1, puis list à nouveau : la première note a disparu et les autres ont avancé d’un numéro. Tape ensuite done abc : tu vois No note abc en rouge et le code de sortie 1, et list affiche les mêmes notes qu’avant.

Essayez vous-même

// Votre outil de prise de notes commence ici.
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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les bases de Node.js

Entraînez-vous par vous-même : Playground Express