array.ts 515 B

1234567891011121314151617
  1. export function same<T>(a: readonly T[] | undefined, b: readonly T[] | undefined) {
  2. if (a === b) return true
  3. if (!a || !b) return false
  4. if (a.length !== b.length) return false
  5. return a.every((x, i) => x === b[i])
  6. }
  7. export function findLast<T>(
  8. items: readonly T[],
  9. predicate: (item: T, index: number, items: readonly T[]) => boolean,
  10. ): T | undefined {
  11. for (let i = items.length - 1; i >= 0; i -= 1) {
  12. const item = items[i]
  13. if (predicate(item, i, items)) return item
  14. }
  15. return undefined
  16. }