הסרת הערה
חלק מהיחידה יסודות Node.js במסלול ה-Node.js של Coddy. שיעור 15 מתוך 33.
done 2 אמור להסיר את הערה 2, ואנשים מקלידים כל דבר אחרי done.
ארגומנטים הם מחרוזות: Number('2') הוא 2 ו-Number('two') הוא NaN. Number.isInteger דוחה את NaN ואת 2.5 בבדיקה אחת; לאחר מכן בודקים את הטווח. רשימות נספרות מ-1 ומערכים מ-0, לכן הערה n נמצאת באינדקס n - 1, ו-splice(i, 1) מסיר אותה.
// 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)}`);אתגר
קלכשמסיימים משימה, מסמנים אותה כהושלמה והיא נעלמת מהרשימה. הוסיפו פקודת done שמסירה פתק לפי המספר שלו.
- ב־
notes.js, הוסיפו פקודתdone. המילה שאחריdoneהיא מספר הפתק, כפי שמציגה אותוlist, כך שפתק 1 הוא הפתק הראשון. המילה מתקבלת כמחרוזת. - הסירו את הפתק הזה מהאחסון, ואז שמרו את הפתקים ב־
notes.json, באותו אופן שבוaddשומרת אותם. פתק 1 נמצא באינדקס 0 של המערך. אפשר למקם את קוד ההסרה ב־notes.jsאו כשיטה ב־store.js. - הדפיסו
Done:ואחריו את הטקסט של הפתק שהסרתם. עם הפתקיםBuy milk,Call Adaו־Water the plants, הפקודהnode notes.js done 1מדפיסה:לאחר מכן,Done: Buy milknotes.jsonמכיל רק אתCall AdaואתWater the plants. הפקודהdone 3מסירה אתWater the plants. - אם המילה אינה מספר של פתק, אל תשנו דבר. הדפיסו ל־stderr את
No noteואחריו את המילה, וצאו עם קוד 1. כך מטופלים מקרים כמוabc,0, מספר עשרוני כמו2.5, ומספר שגדול ממספר הפתקים, כמו9כשיש שלושה פתקים. הפקודהnode notes.js done abcמדפיסה את ההודעה הזאת באדום:No note abc
נסו זאת: הקלידו list בתיבה שאחרי $ node notes.js כדי לראות את הפתקים שלכם ואת המספרים שלהם. הקלידו done 1, ואז שוב list: הפתק הראשון נעלם והפתקים האחרים עלו במספר אחד. אחר כך הקלידו done abc: תראו את No note abc באדום וקוד היציאה יהיה 1, ו־list יציג את אותם פתקים כמו קודם.
נסו בעצמכם
// כלי הפתקים שלך מתחיל כאן.
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);
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות Node.js
1הרצת JavaScript ב-Node
שלום, Nodeקריאת הפקודהארגומנטים של שורת הפקודהפקודותתרגלו בעצמכם: Express אונליין