0Pricing
JavaScript Academy · บทเรียน

E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย)

แยกวิเคราะห์อาร์เรย์บรรทัดบันทึกที่อยู่ในหน่วยความจำ กรองตามระดับหรือคำสำคัญ และนับเหตุการณ์ด้วย Map โดยคงโค้ดให้เล็กและอ่านง่าย

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

สิ่งที่จะสร้าง

เป้าหมาย: วิเคราะห์บันทึกในหน่วยความจำ

  • แทนบรรทัดด้วยสตริงขนาดเล็ก
  • กรองตามlevelหรือคำสำคัญ
  • นับจำนวนด้วย Map
  • ทำให้ฟังก์ชันสั้นและชัดเจน
E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย) — ภาพประกอบ 1

ข้อมูลและตัวแยกวิเคราะห์

สร้างโครงสร้างอย่างง่ายสำหรับแต่ละบรรทัด ได้แก่ เวลา 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]));
E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย) — ภาพประกอบ 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);
E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย) — ภาพประกอบ 3

ตัวนับด้วย 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"));
E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย) — ภาพประกอบ 4

ตัวอย่าง 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));
E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย) — ภาพประกอบ 5

คำแนะนำสำหรับผู้เริ่มต้น

เคล็ดลับ:

  • สร้างตัวแยกวิเคราะห์ขนาดเล็กก่อน
  • เขียนตัวช่วยกรองขนาดเล็กสำหรับแต่ละคำถาม
  • นับจำนวนด้วย Map
  • ควรใช้สตริงที่เรียบง่ายและลูปที่ชัดเจนสำหรับผู้เริ่มต้น
E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย) — ภาพประกอบ 6

แบบทดสอบการนับด้วย Map

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

E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย) — ภาพประกอบ 7

ทบทวน

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

E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย) — ภาพประกอบ 8

คำถามที่พบบ่อย

บทเรียน “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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. E1 — ตัวประเมินนิพจน์ (ตอนที่ 1: + และ - แบบ LTR)
  2. E2 — ตัววิเคราะห์บันทึก (ตัวกรองและตัวนับอย่างง่าย)
  3. E3 — กลุ่มงานหรือคิว Promise (การทำงาน async พร้อมกัน)
← กลับไปที่ JavaScript Academy