| 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)]; |
| } |
|
|
| |
| 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; |
| }, |
| ]; |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| 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, |
| }, |
| ]; |
| } |
| } |
|
|