Menu
CoddyTech

Eliminar una nota

Parte de la sección Conceptos básicos de Node.js del Journey de Node.js de Coddy. Lección 15 de 33.

done 2 debería eliminar la nota 2, y la gente escribe cualquier cosa después de done.

Los argumentos son cadenas: Number('2') es 2 y Number('two') es NaN. Number.isInteger rechaza NaN y 2.5 en una sola prueba; después comprueba el rango. Las listas empiezan a contar desde 1 y los arreglos desde 0, así que la nota n está en el índice n - 1, y splice(i, 1) la elimina.

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

Desafío

Fácil

Cuando terminas una tarea, la marcas como hecha y desaparece de la lista. Añade un comando done que elimine una nota por su número.

  1. En notes.js, añade un comando done. La palabra que aparece después de done es el número de la nota, tal como lo muestra list, así que la nota 1 es la primera nota. La palabra llega como una cadena.
  2. Elimina esa nota del almacén y luego guarda las notas en notes.json, de la misma manera que add las guarda. La nota 1 está en el índice 0 de la matriz. Puedes poner el código para eliminarla en notes.js o como método en store.js.
  3. Imprime Done: seguido del texto de la nota que eliminaste. Con las notas Buy milk, Call Ada y Water the plants, node notes.js done 1 imprime:
    Done: Buy milk
    notes.json contiene después solo Call Ada y Water the plants. done 3 elimina Water the plants.
  4. Si la palabra no es el número de una nota, no cambies nada. Imprime No note seguido de la palabra en stderr y sal con el código 1. Esto incluye una palabra como abc, 0, un decimal como 2.5 y un número superior al último, como 9 cuando hay tres notas. node notes.js done abc imprime esto en rojo:
    No note abc

Pruébalo: escribe list en el cuadro después de $ node notes.js para ver tus notas y sus números. Escribe done 1 y luego list otra vez: la primera nota habrá desaparecido y las demás habrán subido un número. Después escribe done abc: verás No note abc en rojo y el código de salida 1, y list mostrará las mismas notas que antes.

Pruébalo tú mismo

// Tu herramienta de notas comienza aquí.
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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Conceptos básicos de Node.js

Practica por tu cuenta: Playground de Express