How to get median of an array of numbers in JavaScript ? - GeeksforGeeks

22 Apr, 2021
In this article, we will see how to find the median of an array using JavaScript.
Examples:
Input arr1 : [1 4 7 9]
Output : 5.5
Explanation : The median of the two sorted array is 
              the middle elements which is 5 if the 
              arrayLength =arr1.length + arr2.length is odd 
              if the array length is even then it will be 
              the average of two number 

Input: arr1 : [5 3 1 8 90]
        
Output: 5
Explanation : The median is average of two number 
              because the array.length is even for this case.
Approach: Here we first sort the array and then will find the array length. If the array length is even then median will be arr[(arr.length)/2] +arr[((arr.length)/2)+1]. If the array length is odd then the median will be a middle element.
Javascript
<script>    function medianof2Arr(arr1) {        var concat = arr1;        concat = concat.sort(            function (a, b) { return a - b });          console.log(concat);        var length = concat.length;          if (length % 2 == 1) {              // If length is odd            console.log(concat[(length / 2) - .5])            return concat[(length / 2) - .5]          }        else {            console.log((concat[length / 2]                 + concat[(length / 2) - 1]) / 2);                              return (concat[length / 2]                 + concat[(length / 2) - 1]) / 2;        }    }      arr1 = [1, 4, 7, 9]      medianof2Arr(arr1)</script>
Output:
5.5
Time Complexity:
O(n + m)
Approach 2: Here we have first made the variable middle which has the middle value irrespective of length whether array length will be odd and even. Now after that we sort the array by avoiding mutation. Mutation means changing the object name with another object name or passing the object to another object called mutation.
It can be done with reference data types which are arrays, Object So For now avoid this. After that if the length of array is even then we have the two value in array at pos arr((arr.length)/2) + arr(((arr.length)/2) +1). Then take the mean of these two number and return as a median.
Javascript
<script>    function median_of_arr(arr) {        const middle = (arr.length + 1) / 2;          // Avoid mutating when sorting        const sorted = [...arr].sort((a, b) => a - b);        const isEven = sorted.length % 2 === 0;          return isEven ? (sorted[middle - 1.5]            + sorted[middle - 0.5]) / 2 :            sorted[middle - 1];    }    var arr = [1, 4, 7, 9];    console.log(median_of_arr(arr));  </script>
Output: 
5.5
Time Complexity:
O(n+m)
javascript-math
JavaScript-Methods
JavaScript-Questions
Picked
JavaScript
Web Technologies
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Remove elements from a JavaScript Array
Convert a string to an integer in JavaScript
Difference between var, let and const keywords in JavaScript
Differences between Functional Components and Class Components in React
How to calculate the number of days between two dates in javascript?
Remove elements from a JavaScript Array
Installation of Node.js on Linux
Convert a string to an integer in JavaScript
How to fetch data from an API in ReactJS ?
How to insert spaces/tabs in text using HTML/CSS?