mirror of
https://github.com/robonen/tools.git
synced 2026-03-20 02:44:45 +00:00
feat(packages/stdlib): add last arrays util
This commit is contained in:
23
packages/stdlib/src/arrays/last/index.test.ts
Normal file
23
packages/stdlib/src/arrays/last/index.test.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { last } from '.';
|
||||
|
||||
describe('last', () => {
|
||||
it('return the last element of a non-empty array', () => {
|
||||
expect(last([1, 2, 3, 4, 5])).toBe(5);
|
||||
expect(last(['a', 'b', 'c'])).toBe('c');
|
||||
});
|
||||
|
||||
it('return undefined if the array is empty and no default value is provided', () => {
|
||||
expect(last([])).toBeUndefined();
|
||||
});
|
||||
|
||||
it('return the default value for an empty array with a default value', () => {
|
||||
expect(last([], 42)).toBe(42);
|
||||
expect(last([], 'default')).toBe('default');
|
||||
});
|
||||
|
||||
it('return the first element even if a default value is provided', () => {
|
||||
expect(last([1, 2, 3], 42)).toBe(3);
|
||||
expect(last(['a', 'b', 'c'], 'default')).toBe('c');
|
||||
});
|
||||
});
|
||||
20
packages/stdlib/src/arrays/last/index.ts
Normal file
20
packages/stdlib/src/arrays/last/index.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* @name last
|
||||
* @section Arrays
|
||||
* @description Gets the last element of an array
|
||||
*
|
||||
* @param {Value[]} arr The array to get the last element of
|
||||
* @param {Value} [defaultValue] The default value to return if the array is empty
|
||||
* @returns {Value | undefined} The last element of the array, or the default value if the array is empty
|
||||
*
|
||||
* @example
|
||||
* last([1, 2, 3, 4, 5]); // => 5
|
||||
*
|
||||
* @example
|
||||
* last([], 3); // => 3
|
||||
*
|
||||
* @since 0.0.3
|
||||
*/
|
||||
export function last<Value>(arr: Value[], defaultValue?: Value) {
|
||||
return arr[arr.length - 1] ?? defaultValue;
|
||||
}
|
||||
Reference in New Issue
Block a user