diff --git a/packages/backend/src/prelude/array.ts b/packages/backend/src/prelude/array.ts index 71a24c89b7..20ffbcd339 100644 --- a/packages/backend/src/prelude/array.ts +++ b/packages/backend/src/prelude/array.ts @@ -3,7 +3,6 @@ import type { EndoRelation, Predicate } from "./relation.js"; /** * Count the number of elements that satisfy the predicate */ - export function countIf<T>(f: Predicate<T>, xs: T[]): number { return xs.filter(f).length; } @@ -60,6 +59,21 @@ export function maximum(xs: number[]): number { return Math.max(...xs); } +/** + * Returns if two arrays are equal + * + * examples: + * equal([1, 2, 3], [1, 2, 3]) === true + * equal([1, 2, 3], [1, 3, 2]) === false + * equal([1, 2, 3], [1, 2]) === false + */ +export function equal<T>(lhs: T[], rhs: T[]): boolean { + return ( + lhs.length === rhs.length && + lhs.every((value, index) => value === rhs[index]) + ); +} + /** * Splits an array based on the equivalence relation. * The concatenation of the result is equal to the argument.