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);