Menu
CoddyTech

Xóa ghi chú

Thuộc phần Kiến thức cơ bản về Node.js trong hành trình Node.js của Coddy. Bài học 15 trên 33.

done 2 sẽ xóa ghi chú số 2, và mọi người nhập bất cứ thứ gì sau done.

Đối số là chuỗi: Number('2') là 2 và Number('two') là NaN. Number.isInteger loại NaN và 2.5 trong một lần kiểm tra, sau đó kiểm tra phạm vi. Danh sách đếm từ 1 còn mảng đếm từ 0, nên ghi chú số n nằm ở chỉ số n - 1, và splice(i, 1) xóa ghi chú đó.

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

Thử thách

Dễ

Khi hoàn thành một việc, bạn đánh dấu việc đó là xong và nó sẽ biến mất khỏi danh sách. Thêm lệnh done để xóa ghi chú theo số thứ tự.

  1. Trong notes.js, thêm lệnh done. Từ đứng sau done là số thứ tự của ghi chú, như trong list, nên ghi chú 1 là ghi chú đầu tiên. Từ này được nhận dưới dạng chuỗi.
  2. Xóa ghi chú đó khỏi kho lưu trữ, rồi lưu ghi chú vào notes.json, giống như cách add lưu ghi chú. Ghi chú 1 nằm ở chỉ số 0 trong mảng. Bạn có thể viết code xóa ghi chú trong notes.js hoặc thêm thành phương thức trong store.js.
  3. In ra Done: theo sau là nội dung ghi chú bạn đã xóa. Với các ghi chú Buy milk, Call Ada và Water the plants, lệnh node notes.js done 1 in ra:
    Done: Buy milk
    Sau đó, notes.json chỉ còn Call Ada và Water the plants. Lệnh done 3 xóa Water the plants.
  4. Nếu từ đó không phải là số thứ tự của một ghi chú, đừng thay đổi gì. In ra No note theo sau là từ đó vào stderr, rồi thoát với mã 1. Trường hợp này bao gồm từ như abc, 0, số thập phân như 2.5, và số lớn hơn số ghi chú hiện có, như 9 khi có ba ghi chú. Lệnh node notes.js done abc in ra dòng này màu đỏ:
    No note abc

Thử nhé: nhập list vào ô sau $ node notes.js để xem ghi chú và số thứ tự của chúng. Nhập done 1, rồi nhập lại list: ghi chú đầu tiên đã biến mất và các ghi chú còn lại tăng lên một số. Sau đó nhập done abc: bạn sẽ thấy No note abc màu đỏ và mã thoát 1, còn list hiển thị những ghi chú như trước.

Tự làm thử

// Công cụ ghi chú của bạn bắt đầu từ đây.
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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản về Node.js

Tự luyện tập: Playground Express