code: function SparseReverse(array, len) {
    var keys = GetSortedArrayKeys(array, %GetArrayKeys(array, len));
    var high_counter = keys.length - 1;
    var low_counter = 0;
    while (low_counter <= high_counter) {
      var i = keys[low_counter];
      var j = keys[high_counter];
  
      var j_complement = len - j - 1;
      var low, high;
  
      if (j_complement <= i) {
        high = j;
        while (keys[--high_counter] == j) { }
        low = j_complement;
      }
      if (j_complement >= i) {
        low = i;
        while (keys[++low_counter] == i) { }
        high = len - i - 1;
      }
  
      var current_i = array[low];
      if (!IS_UNDEFINED(current_i) || low in array) {
        var current_j = array[high];
        if (!IS_UNDEFINED(current_j) || high in array) {
          array[low] = current_j;
          array[high] = current_i;
        } else {
          array[high] = current_i;
          delete array[low];
        }
      } else {
        var current_j = array[high];
        if (!IS_UNDEFINED(current_j) || high in array) {
          array[low] = current_j;
          delete array[high];
        }
      }
    }
  }
docs: For implementing reverse() on large, sparse arrays.