function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {
	      var index = -1,
	          arrLength = array.length,
	          othLength = other.length;

	      if (arrLength != othLength && !(isLoose && othLength > arrLength)) {
	        return false;
	      }
	      // Ignore non-index properties.
	      while (++index < arrLength) {
	        var arrValue = array[index],
	            othValue = other[index],
	            result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;

	        if (result !== undefined) {
	          if (result) {
	            continue;
	          }
	          return false;
	        }
	        // Recursively compare arrays (susceptible to call stack limits).
	        if (isLoose) {
	          if (!arraySome(other, function(othValue) {
	                return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
	              })) {
	            return false;
	          }
	        } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {
	          return false;
	        }
	      }
	      return true;
	    }
A specialized version of `baseIsEqualDeep` for arrays with support for
partial deep comparisons.

@private
@param {Array} array The array to compare.
@param {Array} other The other array to compare.
@param {Function} equalFunc The function to determine equivalents of values.
@param {Function} [customizer] The function to customize comparing arrays.
@param {boolean} [isLoose] Specify performing partial comparisons.
@param {Array} [stackA] Tracks traversed `value` objects.
@param {Array} [stackB] Tracks traversed `other` objects.
@returns {boolean} Returns `true` if the arrays are equivalent, else `false`.