UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

59 lines (43 loc) 1.25 kB
import { assert } from "../../assert.js"; /** * Will invoke A.equals(B) on members if such exists * @template T,R * @param {T[]} first * @param {R[]} second * @return {boolean} */ export function isArrayEqual(first, second) { assert.defined(first, 'first'); assert.isArray(first, 'first'); assert.defined(second, 'second'); assert.isArray(second, 'second'); const element_count = first.length; if (element_count !== second.length) { // arrays are of different size return false; } let i = 0; for (; i < element_count; i++) { const a = first[i]; const b = second[i]; if (a === b) { continue; } if ( a === undefined || a === null || b === undefined || b === null ) { // shortcut to avoid working with nulls and undefined values return false; } // try "equals" method if (typeof a === "object" && typeof a.equals === "function") { if (!a.equals(b)) { return false; } } else { return false; } } return true; }