Array Reverse

by Bret Lowrey

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.4/lodash.min.js"></script>
<body>

</body>

JavaScript

const iterative = list => {
  let result = new Array(list.length);
  for (let i = [list.length - 1]; i >= 0; i--) {
    result[list.length - 1 - i] = list[i];
  }
  return result;
}

const swap = list => {
  const mid = Math.floor(list.length / 2);
  for (let i = 0; i < mid; i++) {
    const temp = list[i];
    list[i] = list[list.length - 1 - i];
    list[list.length - 1 - i] = temp;
  }
  return list;
}

const swap2 = list => {
  const mid = Math.floor(list.length / 2);
  for (let i = 0; i < mid; i++) {
    const temp = list[i];
    list[i] = list.splice(list.length - 1 - i, 1, list[i])[0];
  }
  return list;
}

const standard = list => list.reverse();

const clockTime = fn => {
  var dt = new Date();
  var times = 1000000;
  for (var i = 0; i < times; i++) {
    fn();
  }
  return Date.now() - dt.getTime();
}

document.body.innerHTML = JSON.stringify({
  'iterative': clockTime(() => iterative([1, 2, 3, 4, 5])),
  'swap': clockTime(() => swap([1, 2, 3, 4, 5])),
  'swap2': clockTime(() => swap2([1, 2, 3, 4, 5])),
  'standard': clockTime(() => standard([1, 2, 3, 4, 5]))
}, null, 2);