Add getMiddleElement array util
This commit is contained in:
+13
-1
@@ -1,5 +1,11 @@
|
|||||||
import { describe, expect, it } from 'bun:test';
|
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', () => {
|
describe('array utils', () => {
|
||||||
it('sumArray number array', () => {
|
it('sumArray number array', () => {
|
||||||
@@ -127,4 +133,10 @@ describe('array utils', () => {
|
|||||||
expect(multBy([], (e) => e)).toBeFinite();
|
expect(multBy([], (e) => e)).toBeFinite();
|
||||||
expect(multBy([], (e) => e)).toBe(0);
|
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> }[]
|
[] 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