ค่ามัธยฐาน (Median) คือค่ากึ่งกลางของชุดข้อมูลที่เรียงลำดับแล้ว หากจำนวนข้อมูลเป็นคี่ คือค่าตรงกลาง หากเป็นคู่ คือค่าเฉลี่ยของค่ากึ่งกลาง 2 ค่า
ตัวอย่างโค้ด
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>คำนวณค่ามัธยฐาน</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.result, .sample { font-size: 18px; font-weight: 500; color: blueviolet; }
.sample { color: red; }
</style>
</head>
<body>
<h1>คำนวณค่ามัธยฐานของอาร์เรย์</h1>
<div><pre class="sample"></pre></div>
<div class="result"></div>
<button class="Btn">คำนวณ</button>
<h3>กดปุ่มเพื่อคำนวณค่ามัธยฐานของอาร์เรย์ด้านบน</h3>
<script>
const resEle = document.querySelector(".result");
const btnEle = document.querySelector(".Btn");
const sampleEle = document.querySelector(".sample");
const arr = [1, 5, 6, 99, 12, 11, 22];
sampleEle.innerHTML = "[" + arr.join(", ") + "]";
btnEle.addEventListener("click", () => {
// คัดลอกและเรียงลำดับ (ไม่แก้ไขอาร์เรย์เดิม)
const sorted = [...arr].sort((a, b) => a - b);
const mid = Math.floor(sorted.length / 2);
let median;
if (sorted.length % 2 !== 0) {
// จำนวนคี่: ค่าตรงกลาง
median = sorted[mid];
} else {
// จำนวนคู่: ค่าเฉลี่ยของ 2 ค่ากลาง
median = (sorted[mid - 1] + sorted[mid]) / 2;
}
resEle.innerHTML = "ค่ามัธยฐาน = " + median;
});
</script>
</body>
</html>
ผลลัพธ์

เมื่อกดปุ่ม "คำนวณ":

ฟังก์ชันสำเร็จรูป (Reusable)
function median(arr) {
if (!arr.length) return NaN;
const sorted = [...arr].sort((a, b) => a - b);
const mid = Math.floor(sorted.length / 2);
return sorted.length % 2 !== 0
? sorted[mid]
: (sorted[mid - 1] + sorted[mid]) / 2;
}
// ใช้งาน
console.log(median([1, 5, 6, 99, 12, 11, 22])); // 11
console.log(median([1, 2, 3, 4])); // 2.5
โน้ตเพิ่มเติม
sort((a, b) => a - b)จำเป็นสำหรับตัวเลข เพราะsort()เริ่มต้นเรียงแบบสตริง (เช่น "10" < "2")- ใช้
[...arr]คัดลอกอาร์เรย์ก่อนเรียง เพื่อไม่เปลี่ยนข้อมูลต้นฉบับ (immutable approach) - สำหรับข้อมูลใหญ่ ควรใช้ Quickselect algorithm (O(n)) แทนการเรียงทั้งหมด (O(n log n))