( a: Iterable<T>, b: Iterable<T>, comparator: (a: T, b: T) => boolean, )
| 20 | } |
| 21 | |
| 22 | export function areIterablesEqual<T>( |
| 23 | a: Iterable<T>, |
| 24 | b: Iterable<T>, |
| 25 | comparator: (a: T, b: T) => boolean, |
| 26 | ): boolean { |
| 27 | const iterator1 = a[Symbol.iterator](); |
| 28 | const iterator2 = b[Symbol.iterator](); |
| 29 | |
| 30 | while (true) { |
| 31 | const item1 = iterator1.next(); |
| 32 | const item2 = iterator2.next(); |
| 33 | if (item1.done && item2.done) return true; |
| 34 | if (item1.done || item2.done) return false; |
| 35 | if (!comparator(item1.value, item2.value)) return false; |
| 36 | } |
| 37 | } |
| 38 | |
| 39 | export function iterateListLike<T>(obj: Iterable<T>, fn: (p: T) => void) { |
| 40 | if (Array.isArray(obj)) { |
no test coverage detected
searching dependent graphs…