Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
| export function last<T>(arr: T[]): T | undefined { | |
| return arr[arr.length - 1]; | |
| } | |
| export function randomPick<T>(arr: T[]): T | undefined { | |
| return arr[Math.floor(Math.random() * arr.length)]; | |
| } | |
| /** Return an array with an edited element at the given index. */ | |
| export function edit<T>(arr: T[], index: number, newValue: T): T[] { | |
| return arr.map((value, i) => (i === index ? newValue : value)); | |
| } | |
| type IterateReturn<T> = [ | |
| T, | |
| { | |
| isFirst: boolean; | |
| isLast: boolean; | |
| array: T[]; | |
| index: number; | |
| length: number; | |
| }, | |
| ]; | |
| /** | |
| * Returns an an iterator that iterates over the given array. | |
| * Each returned item contains helpful properties, such as | |
| * `isFirst`, `isLast`, `array`, `index`, and `length` | |
| * | |
| * @param array The array to iterate over. | |
| * @returns An iterator that iterates over the given array. | |
| */ | |
| export function* iterate<T>(array: T[]): Generator<IterateReturn<T>> { | |
| for (let i = 0; i < array.length; i++) { | |
| yield [ | |
| array[i]!, | |
| { | |
| isFirst: i === 0, | |
| isLast: i === array.length - 1, | |
| array, | |
| index: i, | |
| length: array.length, | |
| }, | |
| ]; | |
| } | |
| } | |