TheAlgorithms/JavaScript · error · TypeError
Invalid Input
Error message
Invalid Input
What it means
The meanAbsoluteDeviation function computes the mean absolute deviation of a dataset by iterating over elements and passing them to mean(). The guard rejects non-array input with a TypeError. Note: it checks for Array type but does NOT validate that individual elements are numbers, so an array of non-numbers would fail later inside mean().
Source
Thrown at Maths/MeanAbsoluteDeviation.js:11
import { mean } from './AverageMean.js'
/**
*@function meanAbsoluteDeviation
*@description Calculates the mean absolute deviation of list of numbers
* @param {Integer} data
* @returns meanAbsoluteDeviation([2,34,5,0,-2]) = 10.480
* @url https://en.wikipedia.org/wiki/Average_absolute_deviation
*/
function meanAbsoluteDeviation(data) {
if (!Array.isArray(data)) {
throw new TypeError('Invalid Input')
}
let absoluteSum = 0
const meanValue = mean(data)
for (const dataPoint of data) {
absoluteSum += Math.abs(dataPoint - meanValue)
}
return absoluteSum / data.length
}
export { meanAbsoluteDeviation }
View on GitHub (pinned to 5c39e87a9a)
Solutions
- Pass a JavaScript array of numbers.
- Convert string input to an array with split and map to Number.
- Use Array.isArray() to pre-check before calling.
Example fix
// before
meanAbsoluteDeviation("1,2,3")
// after
meanAbsoluteDeviation([1, 2, 3]) Defensive patterns
Strategy: type-guard
Validate before calling
if (!Array.isArray(data) || !data.every((x) => typeof x === 'number')) {
throw new TypeError('data must be an array of numbers')
}
meanAbsoluteDeviation(data) Type guard
const isNumberArray = (d) => Array.isArray(d) && d.every((x) => typeof x === 'number')
Prevention
- Use Array.isArray() before statistics functions.
- Convert comma-separated strings to arrays with split(',').map(Number) before processing.
- Also validate element types since the function only checks the outer array.
When it happens
Trigger: Calling meanAbsoluteDeviation("1,2,3"), meanAbsoluteDeviation(123), meanAbsoluteDeviation(null), or meanAbsoluteDeviation({0:1, length:3}). Any non-array value triggers this error.
Common situations: Passing a comma-separated string instead of an array, passing a single number, or destructuring that produces a non-array value.
Related errors
- Argument must be an Array
- Invalid Input
- Input data must be numbers
- The two lists must be of equal length
- Input must be Numbers
AI-assisted analysis of TheAlgorithms/JavaScript@5c39e87a9a (2026-08-13).
Data as JSON: /api/errors/8c6a04819bd85d8c.
Report an issue: GitHub.