(arr: (number | null)[], includeZero = false)
| 6 | }; |
| 7 | |
| 8 | export const average = (arr: (number | null)[], includeZero = false) => { |
| 9 | const filtered = arr.filter( |
| 10 | (n): n is number => |
| 11 | isNumber(n) && |
| 12 | !Number.isNaN(n) && |
| 13 | Number.isFinite(n) && |
| 14 | (includeZero || n !== 0), |
| 15 | ); |
| 16 | const avg = filtered.reduce((p, c) => p + c, 0) / filtered.length; |
| 17 | return Number.isNaN(avg) ? 0 : avg; |
| 18 | }; |
| 19 | |
| 20 | export const sum = (arr: (number | null | undefined)[]): number => |
| 21 | round(arr.filter(isNumber).reduce((acc, item) => acc + item, 0)); |
no outgoing calls
no test coverage detected