Create a new array based on the given array, but with a reduced length. The values in the given array are equally distributed into subsets based on an average (determined by
given_length / new_length).
const shrink =const arr = 1 2 3 4// => [1.5, 3.5]
By default, the average value of each subset is used in the new array. You can change this behavior by passing a "subset reducer", which is an object (or an object-returning function) that dictates how values are derived from each subset.
Subset reducers always have
next(value, index) and
By passing a function instead of an object for the subset reducer,
you create a scope in which you can declare internal state for the
done functions you return.
Subset reducers also have optional properties:
length: number > 0
start: number > 0
end: number > 0
length property only matters if a length wasn't passed as
the 2nd argument of
start property determines how many values at the start of the input array
should not be grouped into subsets, but still be passed to the reducer and
included in the output array.
end property is identical to
start, except it determines how many values
at the end of the input array should not be grouped, etc.
There are currently 4 built-in subset reducers.
let arr = 4 2 1// Use the average value of each subset. This is the default.let avg =// => 3.5// Use the maximum value of each subset.let max =// => 4// Use the last value of each subset.let last =// => 1// Access a key of each object and pass it to another reducer.let pluck =arr = a: 2 a: 3// => 2.5