index.js
function indexOf(arr, value, start) {
  start = start || 0;
  if (arr == null) {
    return -1;
  }
  var len = arr.length;
  var i = start < 0 ? len + start : start;
  while (i < len) {
    if (arr[i] === value) {
      return i;
    }
    i++;
  }
  return -1;
}
function indexOf(arr, value, start) {
  start = start || 0;
  if (arr == null) {
    return -1;
  }
  var len = arr.length;
  var i = start < 0 ? len + start : start;
  while (i < len) {
    if (arr[i] === value) {
      return i;
    }
    i++;
  }
  return -1;
}
function indexOf ( arr , value , start ) { start = start || 0 ; if ( arr == null ) { return - 1 ; } var len = arr . length ; var i = start < 0 ? len + start : start ; while ( i < len ) { if ( arr [ i ] === value ) { return i ; } i ++ ; } return - 1 ; }
Custom `indexOf` implementation that works with sparse arrays
to provide consisten results in any environment or browser.

@param  {Array} `arr`
@param  {*} `value`
@param  {Array} `start` Optionally define a starting index.
@return {Array}
Custom indexOf implementation that works with sparse arrays to provide consisten results in any environment or browser .