## Splitting arrays into X elements and “the rest”

When a feature calls for the first five photos from a list and a link that says “27 more photos”, we can split the list of photos into these two blocks.

JavaScript

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]
```

When a feature calls for the first five photos from a list and a link that says “27 more photos”, we can split the list of photos into these two blocks.

JavaScript

Read fire tipJavaScript

Read fire tipJavaScriptreadability

Read fire tip