I'm writing a typescript function that accepts a numeric array (i.e., type: number[]
) and calculates its mean. In addition, I want to account for when the input array might contain some null
values. To this end, I added an argument, that when set to true
, tells the function to remove null
s before calculating the mean.
But I can't figure out the proper way to do this, as I can't override the input within the function.
Here's my code for calcMean()
function calcMean(arr: number[], nullRemove: boolean = true): number {
if (nullRemove) { // if TRUE, which is the default, then throw out nulls and re-assign to `arr`
const arr: number[] = arr.filter((elem) => elem !== null);
}
// then simply calculate the mean of `arr`
return arr.reduce((acc, v, i, a) => acc + v / a.length, 0); // https://mcmap.net/q/100282/-how-to-compute-the-sum-and-average-of-elements-in-an-array-duplicate
}
I then get an error:
Block-scoped variable 'arr' used before its declaration.ts(2448)
I also tried using let
in addition or instead of const
but it didn't solve the problem.
What am I missing here?
nullRemove
isfalse
? – WretchednullRemove
isfalse
then the IF block shouldn't be executed, thusreturn arr.reduce((acc, v, i, a) => acc + v / a.length, 0);
is the only thing the function does. – Apply