Add getMiddleElement array util
This commit is contained in:
+13
-1
@@ -1,5 +1,11 @@
|
||||
import { describe, expect, it } from 'bun:test';
|
||||
import { multArray, multBy, sumArray, sumBy } from './array.ts';
|
||||
import {
|
||||
getMiddleElement,
|
||||
multArray,
|
||||
multBy,
|
||||
sumArray,
|
||||
sumBy
|
||||
} from './array.ts';
|
||||
|
||||
describe('array utils', () => {
|
||||
it('sumArray number array', () => {
|
||||
@@ -127,4 +133,10 @@ describe('array utils', () => {
|
||||
expect(multBy([], (e) => e)).toBeFinite();
|
||||
expect(multBy([], (e) => e)).toBe(0);
|
||||
});
|
||||
it('getMiddleElement', () => {
|
||||
expect(getMiddleElement([1, 2, 3, 4])).toBe(3);
|
||||
expect(getMiddleElement([1, 2, 3])).toBe(2);
|
||||
expect(getMiddleElement([1])).toBe(1);
|
||||
expect(getMiddleElement([])).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -73,3 +73,20 @@ export function groupBy<E, K>(
|
||||
[] as { key: K; elements: Array<E> }[]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the middle Element of an array, rounding up.
|
||||
* Returns undefined for empty arrays without throwing!
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* getMiddleElement([1, 2, 3, 4]) === 3
|
||||
* getMiddleElement([1, 2, 3]) === 2
|
||||
* getMiddleElement([1]) === 1
|
||||
* getMiddleElement([]) === undefined
|
||||
* ```
|
||||
* @param arr
|
||||
*/
|
||||
export function getMiddleElement<E>(arr: ReadonlyArray<E>) {
|
||||
return arr[Math.floor(arr.length / 2)];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user