{"record":{"id":"8c6a04819bd85d8c","repo":"TheAlgorithms/JavaScript","slug":"invalid-input-8c6a04","errorCode":null,"errorMessage":"Invalid Input","messagePattern":"Invalid Input","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"Maths/MeanAbsoluteDeviation.js","lineNumber":11,"sourceCode":"import { mean } from './AverageMean.js'\n/**\n *@function meanAbsoluteDeviation\n *@description Calculates the mean absolute deviation of list of numbers\n * @param {Integer} data\n * @returns meanAbsoluteDeviation([2,34,5,0,-2]) = 10.480\n * @url https://en.wikipedia.org/wiki/Average_absolute_deviation\n */\nfunction meanAbsoluteDeviation(data) {\n  if (!Array.isArray(data)) {\n    throw new TypeError('Invalid Input')\n  }\n  let absoluteSum = 0\n  const meanValue = mean(data)\n  for (const dataPoint of data) {\n    absoluteSum += Math.abs(dataPoint - meanValue)\n  }\n  return absoluteSum / data.length\n}\n\nexport { meanAbsoluteDeviation }\n","sourceCodeStart":1,"sourceCodeEnd":22,"githubUrl":"https://github.com/TheAlgorithms/JavaScript/blob/5c39e87a9a31f279c60f830ad74a845e4788a517/Maths/MeanAbsoluteDeviation.js#L1-L22","documentation":"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().","triggerScenarios":"Calling meanAbsoluteDeviation(\"1,2,3\"), meanAbsoluteDeviation(123), meanAbsoluteDeviation(null), or meanAbsoluteDeviation({0:1, length:3}). Any non-array value triggers this error.","commonSituations":"Passing a comma-separated string instead of an array, passing a single number, or destructuring that produces a non-array value.","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."],"exampleFix":"// before\nmeanAbsoluteDeviation(\"1,2,3\")\n// after\nmeanAbsoluteDeviation([1, 2, 3])","handlingStrategy":"type-guard","validationCode":"if (!Array.isArray(data) || !data.every((x) => typeof x === 'number')) {\n  throw new TypeError('data must be an array of numbers')\n}\nmeanAbsoluteDeviation(data)","typeGuard":"const isNumberArray = (d) => Array.isArray(d) && d.every((x) => typeof x === 'number')","tryCatchPattern":null,"preventionTips":["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."],"tags":["math","statistics","type-check","input-validation"],"backgroundTag":null,"analyzedSha":"5c39e87a9a31f279c60f830ad74a845e4788a517","analyzedAt":"2026-08-13T04:54:54.474Z","schemaVersion":2},"datasetVersion":"2026-08-13T09:17:06.757Z"}