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)}`);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ự.
- Trong
notes.js, thêm lệnhdone. Từ đứng saudonelà số thứ tự của ghi chú, như tronglist, nên ghi chú 1 là ghi chú đầu tiên. Từ này được nhận dưới dạng chuỗi. - Xóa ghi chú đó khỏi kho lưu trữ, rồi lưu ghi chú vào
notes.json, giống như cáchaddlư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ú trongnotes.jshoặc thêm thành phương thức trongstore.js. - In ra
Done:theo sau là nội dung ghi chú bạn đã xóa. Với các ghi chúBuy milk,Call AdavàWater the plants, lệnhnode notes.js done 1in ra:Sau đó,Done: Buy milknotes.jsonchỉ cònCall AdavàWater the plants. Lệnhdone 3xóaWater the plants. - Nếu từ đó không phải là số thứ tự của một ghi chú, đừng thay đổi gì. In ra
No notetheo 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ư9khi có ba ghi chú. Lệnhnode notes.js done abcin 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);
}
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
1Chạy JavaScript trên Node
Xin chào, NodeĐọc lệnhĐối số dòng lệnhCác lệnhTự luyện tập: Playground Express