#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));
Комментариев нет:
Отправить комментарий