
Недавно я решал несколько ката в codewars.com, так что нашел интересную задачу. Вам нужно создать альтернативный метод для реверсирования массива. Очевидно, вы не можете использовать reverse().
Вот 3 способа, которые вы можете использовать для реализации собственного обратного метода.
Императив
Самый простой способ. Нам нужно перемещаться между массивами от последнего к первому элементу, помещая элемент в новый массив.
function reverse(arr) {
const reversed = [];
for(let i = arr.length -1; i >= 0; i--) {
reversed.push(arr[i]);
}
return reversed;
}
Рекурсия
Способ необычный, но действенный. Нам нужно вернуть функцию над срезом массива из второго элемента и объединить первый. Наша рекурсия остановится, когда массив будет пуст.
function reverse(arr) {
if(arr.length < 1) return [];
return reverse(arr.slice(1)).concat(arr[0]);
}
Сортировать
Определенно, это самый умный способ его применения. Вам нужно отсортировать массив, возвращая -1 в его функции сравнения.
function reverse(arr) {
return arr.sort( _ => -1 );
}
Вы можете найти больше информации о сортировке и функции сравнения здесь.
Это мой первый пост, надеюсь, вам будет интересно.