1/**
2 * Callback for checking equality of c and d.
3 *
4 * @callback equalityCallback
5 * @param {*} c
6 * @param {*} d
7 * @returns {boolean}
8 */
9
10/**
11 * Returns true if the given arrays are equal. Optionally can pass an equality function.
12 * @param {Array} a
13 * @param {Array} b
14 * @param {equalityCallback} callbackFunction - defaults to `c === d`
15 * @returns {boolean}
16 */
17export function areArraysEqual(a, b, equalityFunction = (c, d) => { return c === d; }) {
18  try {
19    if (a.length !== b.length)
20      return false;
21
22    for (let i = 0; i < a.length; i++) {
23      if (!equalityFunction(a[i], b[i]))
24        return false;
25    }
26  } catch (ex) {
27    return false;
28  }
29
30  return true;
31}
32