E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย)
แยกวิเคราะห์อาร์เรย์บรรทัดบันทึกที่อยู่ในหน่วยความจำ กรองตามระดับหรือคำสำคัญ และนับเหตุการณ์ด้วย Map โดยคงโค้ดให้เล็กและอ่านง่าย
E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย) เป็นบทเรียน JavaScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน JavaScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 3 บทเรียน
สิ่งที่จะสร้าง
เป้าหมาย: วิเคราะห์บันทึกในหน่วยความจำ
- แทนบรรทัดด้วยสตริงขนาดเล็ก
- กรองตามlevelหรือคำสำคัญ
- นับจำนวนด้วย Map
- ทำให้ฟังก์ชันสั้นและชัดเจน

ข้อมูลและตัวแยกวิเคราะห์
สร้างโครงสร้างอย่างง่ายสำหรับแต่ละบรรทัด ได้แก่ เวลา level และข้อความ เพียงเท่านี้ก็เพียงพอสำหรับตัวกรองและตัวนับ
// Simulated log lines (time level message)
const LINES = [
"10:00 INFO Start app",
"10:01 WARN Low memory",
"10:02 INFO User login /home",
"10:03 ERROR DB timeout",
"10:04 INFO User login /products",
"10:05 ERROR Network fail",
"10:06 WARN Retry request"
];
// Tiny parser: returns { time, level, text }
function parseLine(line) {
// split on spaces, compact, then rebuild pieces
const parts = line.trim().split(/\\s+/);
if (parts.length < 3) return null;
const time = parts[0];
const level = parts[1];
const text = parts.slice(2).join(" ");
return { time: time, level: level, text: text };
}
console.log("parsed:", parseLine(LINES[2]));
พื้นฐานการกรอง
เขียนฟังก์ชันกรองขนาดเล็กสำหรับคำถามทั่วไปแต่ละข้อ โค้ดที่สั้นและอ่านง่ายดีกว่าโค้ดที่ซับซ้อนเกินจำเป็น
// Filter by level or by keyword (case-sensitive for simplicity)
function filterByLevel(lines, want) {
const out = [];
for (const line of lines) {
const p = parseLine(line);
if (p && p.level === want) out.push(p);
}
return out;
}
function filterByKeyword(lines, word) {
const out = [];
for (const line of lines) {
const p = parseLine(line);
if (p && p.text.indexOf(word) !== -1) out.push(p);
}
return out;
}
console.log("ERRORs:", filterByLevel(LINES, "ERROR").length);
console.log("login :", filterByKeyword(LINES, "login").length);
ตัวนับด้วย Map
ใช้ Map เป็นตัวนับ เพราะอัปเดตได้รวดเร็วและอ่านค่าของแต่ละคีย์ได้ง่าย
// Count how many lines per level
function countByLevel(lines) {
const counts = new Map();
for (const line of lines) {
const p = parseLine(line);
if (!p) continue;
const old = counts.get(p.level) || 0;
counts.set(p.level, old + 1);
}
return counts;
}
const c = countByLevel(LINES);
console.log("INFO :", c.get("INFO"));
console.log("WARN :", c.get("WARN"));
console.log("ERROR:", c.get("ERROR"));
ตัวอย่าง Top-N
ดึงข้อมูลจากสตริงเล็กน้อย แล้วจัดอันดับด้วย Map ที่เก็บจำนวน ทำให้กฎการแยกวิเคราะห์เรียบง่าย
// Extract a path after "User login " and rank by frequency
function topLoginPaths(lines, k) {
const freq = new Map();
for (const line of lines) {
const p = parseLine(line);
if (!p) continue;
const mark = "User login ";
const idx = p.text.indexOf(mark);
if (idx !== -1) {
const path = p.text.slice(idx + mark.length).trim();
const old = freq.get(path) || 0;
freq.set(path, old + 1);
}
}
// turn into array and sort descending by count
const arr = Array.from(freq.entries());
arr.sort(function (a, b) { return b[1] - a[1]; });
return arr.slice(0, k);
}
console.log("top paths:", topLoginPaths(LINES, 3));
คำแนะนำสำหรับผู้เริ่มต้น
เคล็ดลับ:
- สร้างตัวแยกวิเคราะห์ขนาดเล็กก่อน
- เขียนตัวช่วยกรองขนาดเล็กสำหรับแต่ละคำถาม
- นับจำนวนด้วย Map
- ควรใช้สตริงที่เรียบง่ายและลูปที่ชัดเจนสำหรับผู้เริ่มต้น

แบบทดสอบการนับด้วย Map
ตรวจสอบอย่างรวดเร็ว: โครงสร้างสำหรับการนับ

ทบทวน
ทบทวน: แยกวิเคราะห์ให้เป็นโครงสร้างขนาดเล็ก กรองตาม level หรือคำสำคัญ และนับจำนวนด้วย Map ทำให้ตัวช่วยแต่ละตัวสั้นและเข้าใจได้ทันที

คำถามที่พบบ่อย
บทเรียน “E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส JavaScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย)”
แยกวิเคราะห์อาร์เรย์บรรทัดบันทึกที่อยู่ในหน่วยความจำ กรองตามระดับหรือคำสำคัญ และนับเหตุการณ์ด้วย Map โดยคงโค้ดให้เล็กและอ่านง่าย คุณปฏิบัติ JavaScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน JavaScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน JavaScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน JavaScript Academy นี้ได้ไหม
ได้ บทเรียน JavaScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- E1 — ตัวประเมินนิพจน์ (ตอนที่ 1: + และ - แบบ LTR)
- E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย)
- E3 — กลุ่มงานหรือคิว Promise (การทำงาน async พร้อมกัน)