Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Обратить последовательность массива без reverse в 30 символов

#javascript #массивы #алгоритм #соревнование


Друзья, привет! Нужен коллективный разум. 

Второй день бьюсь с задачей. Необходимо написать функцию reverse без использования
Array.prototype.reverse() в 30 символов. Дошел до такого варианта, и похоже это мой
предел в знаниях JS. (Такой вариант не подходит так как solution.length > 30) 

let reverse=a=>[...a].map(a.pop,a)


Если кратко, [...a] - создает копию массива, мы проходимся по каждому элементу с
помощью map и при помощи cb функции a.pop, с контекстом a, возвращаем обратную последовательность
массива а. 

Кто знает способ похитрей, поделитесь им, а лучше подскажите где копать.
    


Ответы

Ответ 1



Можно использовать sort. Суть в том, что функция сравнивает два значения за счет compareFunction, которую можно указать. И если в compareFunction возвращается 1, то элементы меняются местами. Вот отсюда можно и плясать. То есть в итоге не сравнивать элементы, а просто тупо всегда возвращать 1. Ну и так как нам не нужно сравнивать элементы, то и во входных данных их (аргументы) опускаем let reverse=a=>a.sort(a=>1); // 29 // let reverse=a=>a.sort(a=>1); // 28 - даже так работает let myArray = [1, 5, 88, 3, 0, -666]; console.log(reverse(myArray));

Комментариев нет:

Отправить комментарий