text: const ArrayUtils = {};
  
  ArrayUtils.unique = function(array) {
  	return array.filter(function(elem, index, self) {
  		return index === self.indexOf(elem);
  	});
  };
  
  ArrayUtils.removeElement = function(array, element) {
  	const index = array.indexOf(element);
  	if (index < 0) return array;
  	array.splice(index, 1);
  	return array;
  };
  
  // https://stackoverflow.com/a/10264318/561309
  ArrayUtils.binarySearch = function(items, value) {
  	var startIndex = 0,
  		stopIndex = items.length - 1,
  		middle = Math.floor((stopIndex + startIndex) / 2);
  
  	while (items[middle] != value && startIndex < stopIndex) {
  		// adjust search area
  		if (value < items[middle]) {
  			stopIndex = middle - 1;
  		} else if (value > items[middle]) {
  			startIndex = middle + 1;
  		}
  
  		// recalculate middle
  		middle = Math.floor((stopIndex + startIndex) / 2);
  	}
  
  	// make sure it's the right value
  	return items[middle] != value ? -1 : middle;
  };
  
  ArrayUtils.findByKey = function(array, key, value) {
  	for (let i = 0; i < array.length; i++) {
  		const o = array[i];
  		if (typeof o !== 'object') continue;
  		if (o[key] === value) return o;
  	}
  	return null;
  };
  
  ArrayUtils.contentEquals = function(array1, array2) {
  	if (array1 === array2) return true;
  	if (!array1.length && !array2.length) return true;
  	if (array1.length !== array2.length) return false;
  
  	for (let i = 0; i < array1.length; i++) {
  		const a1 = array1[i];
  		if (array2.indexOf(a1) < 0) return false;
  	}
  
  	return true;
  };
  
  module.exports = ArrayUtils;
  