# Removing the largest number from an array

We can remove all instances of the largest number in an array by combining `Math.max()`

and `Array.prototype.filter()`

.

We first need to know which number we have to remove. Since we cannot rely on the array being sorted, we have to use `Math.max()`

to find that number.

```
const max = Math.max(16, 4, 23, 15, 42, 8)
// ⇒ 42
```

`Math.max()`

accepts an unspecified number of parameters instead of a single array. To pass an array to it, we need to spread it using the spread operator `...`

.

```
const numbers = [16, 4, 23, 15, 42, 8]
const max = Math.max(...numbers)
// ⇒ 42
```

Once we know the largest number, we can use `Array.prototype.filter()`

to filter that value from the array. We get a copy of the original array with only the numbers that are *not* the largest value.

```
const numbers = [16, 4, 23, 15, 42, 8]
const max = Math.max(...numbers)
numbers.filter(number => number !== max)
// ⇒ [16, 4, 23, 15, 8]
```

By putting this logic in a helper function, we can quickly remove the largest value from any number of arrays.

```
// removes the largest value from an array of numbers
function removeMax(numbers) {
// get this first so we only need to calculate it once
const max = Math.max(...numbers)
// create a new array from all numbers that are NOT `max`
return numbers.filter(number => number !== max)
}
```

We can use this function to remove the largest number from any numerical array in a single line. If the largest value appears more than once, all instances are removed.

```
// remove the largest number from our example
removeMax([16, 4, 23, 15, 42, 8])
// ⇒ [16, 4, 23, 15, 8]
// it removes multiple instances of the same largest number
removeMax([12, 27, 8, 9, 41, 33, 41, 29])
// ⇒ [12, 27, 8, 9, 33, 29]
// if all numbers are the maximum, it returns an empty array
removeMax([5, 5, 5, 5, 5, 5, 5])
// ⇒ []
// it works with negative numbers as well
removeMax([-5, -2, -8, -1, -10])
// ⇒ [-5, -2, -8, -10]
```