在 JavaScript 中計算中位數

Jagathish 2022年5月5日
在 JavaScript 中計算中位數

要在 JavaScript 中獲取中位數,請使用 sort() 方法對整數陣列進行排序。如果長度為奇數,則返回中點處的數字,如果長度為偶數,則返回陣列中兩個中間值的平均值。

在 JavaScript 中獲取中位值

排序後的數字陣列中的中間數字稱為中位數。將根據陣列中元素的數量選擇中位數。

如果陣列的長度為奇數,則選擇中間元素作為中位數。

list = [1,2,3]
len = 3
middleIndex = floor(len / 2); // 1
median = list[middleIndex]; // 2

如果列表的長度是偶數,則通過將中間元素與前一個元素相加並將結果除以 2 來選擇中間元素。

list = [1,2,3,4]
len = 4
middleIndex = floor(len / 2); // 2
median = (list[middleIndex] + list[middleIndex - 1]) / 2; // (3+2)/2 -> 2.5
median;	//2.5

示例下方是獲取數字陣列中位數的片段。

首先,我們建立 getSortedArray() 函式以從輸入陣列建立一個新的排序陣列並將其返回。然後,建立一個函式 findMedian(),它將返回陣列的中位數。

例子:

function getSortedArray(arr){
	return arr.slice().sort((a, b) => a - b);
}
function findMedian(inputArray) {
	let sortedArr = getSortedArray(inputArray);
	let inputLength = inputArray.length;
	let middleIndex = Math.floor(inputLength / 2);
	let oddLength = inputLength % 2 != 0;
	let median;
	if(oddLength) { // if array length is odd -> return element at middleIndex
		median = sortedArr[middleIndex];
	} else {
		median = (sortedArr[middleIndex] + sortedArr[middleIndex - 1]) / 2;
	}
	return median;
}

輸出:

"findMedian([1,2,3]) => " 2
"findMedian([1,2,3,4,5,6]) => " 3.5