## Home > katas > Sum of positive (8kyu) [TypeScript]

# Sum of positive (8kyu) [TypeScript]

Chek kata on Codewars

Description:

```
You get an array of numbers, return the sum of all of the positives ones.
Example [1,-4,7,12] => 1 + 7 + 12 = 20
Note: if there is nothing to sum, the sum is default to 0.
```

### Solution 1

Let's use `reduce()`

method to solve this task.
It executes a reducer function (that you provide) on each element of the array, resulting in single output value.
It is almost a textbook example for reducer.

```
export function positiveSum(arr: number[]): number {
const reducer = (accumulator: number, current: number) => accumulator + (current > 0 ? current : 0)
return arr.reduce(reducer, 0);
}
```

There are a few variations of this solution. The main difference is how we check if the number is positive or not.

### Solution 1.1

```
export const positiveSum = (arr: number[]) => arr.reduce((accumulator: number, current: number) => current > 0 ? accumulator + current : accumulator, 0)
```

### Solution 1.2

```
export const positiveSum = (arr: number[]) => arr.filter(num => num > 0).reduce((accumulator: number, current: number) => accumulator + current, 0)
```

### Solution 1.3

```
export const positiveSum = (arr: number[]) => arr.reduce((accumulator: number, current: number) => accumulator + Math.max(current, 0), 0)
```

### Solution 2

For loop will do the trick as well.

```
export function positiveSum(arr: number[]): number {
let sum: number = 0
for(let i = 0; i < arr.length; i++) {
if(arr[i] > 0) {
sum += arr[i]
}
}
return sum
}
```

### Solution 2.1

Or forEach loop also works fine.

```
export function positiveSum(arr: number[]): number {
let sum: number = 0
arr.forEach((num) => num > 0 && (sum += num))
return sum
}
```