Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Оцените решение задачки, пжл (https://javascript.ru/forum/misc/74647-ocenite-reshenie-zadachki-pzhl.html)

MC-XOBAHCK 26.07.2018 16:54

Оцените решение задачки, пжл
 
Читаю книжку "Выразительный JavaScript" и решаю каждую задачку из неё.
Проблема в том, что у меня ещё ни разу не совпало решение с решением автора.

Как пример задачка Реверсирование массива - написать функцию которая получает массив и отдаёт новый массив в котором элементы идут в обратном порядке.
Без проблем пишу такое решение:
function reverseArray(arr) {
    let newArr = [];
    for (let i = 0; i < arr.length; i++) {
        newArr[i] = arr[arr.length - 1 - i];
    }
    return newArr;
}


А вот вариант автора:
function reverseArray(array) {
    let output = [];
    for (let i = array.length - 1; i >= 0; i--) {
        output.push(array[i]);
    }
    return output;
}

У автора идёт логическое решение в условии цикла, а у меня же внутри цикла. Подобная картина со всеми задачками что я решал.

Посоветуйте, мне стоит переосмыслить стиль кода и делать как автор, прописывая логику в условии (думаю так тоже смогу, просто нужно некоторое время для адаптации и привыкания), или я нормально делаю и никакой разницы нет.
Просто я уже размечтался годика через два-три попробовать работать JS-программистом и пока прокачиваюсь знаниями, нужно и стиль подтягивать к тому как это делают профи.

j0hnik 26.07.2018 16:59

Цитата:

Сообщение от MC-XOBAHCK
Проблема в том, что у меня ещё ни разу не совпало решение с решением автора.

Это нормально автор решает экзотически, в этом задании отличия минимальны.

я б так решил
function reverseArray(arr) {
    return arr.map((el,i)=> arr[arr.length-1-i]);
}

j0hnik 26.07.2018 17:11

Там где то будут примеры которые автор решает несколькими способами:
1) двухэтажной рекурсией (много буков и медленно)
2) вложенным циклом (быстро и меньше буков)

и как бы пишет что рекурсия зато более проста для восприятия, хотя для меня цикл было намного проще понять.
так что вот так вот.

MC-XOBAHCK 26.07.2018 17:21

Цитата:

Сообщение от j0hnik (Сообщение 491096)
я б так решил

Там в задачках оговаривается что без использования методов.

Я просто заметил что у меня всегда однотипная разница - у автора всегда логика в условие попадает.
Вот меня и взяло сомнение, может стоить правильно делать в его стиле, а то как я делаю не используется в серьёзной разработке.

j0hnik 26.07.2018 17:25

Цитата:

Сообщение от MC-XOBAHCK
Там в задачках оговаривается что без использования методов.

output.push(array[i]);
ох и автор :D

MC-XOBAHCK 26.07.2018 17:26

Цитата:

Сообщение от Rise
Это не в условии, условие там в середине, у автора естественно, у вас нет.

Правильно говорить "В параметрах цикла" ? или условиях?

Там в той книжке у него и в if() обычно логика засунута, вот я всё в кучу как условие определил, заметив что это как стиль написания кода идёт.

j0hnik 26.07.2018 17:29

for (инициализация; условие; выражение )

MC-XOBAHCK 26.07.2018 17:30

Цитата:

Сообщение от j0hnik
ох и автор

Это не автор, а я уже так накрутил. Имеется ввиду что работать по материалам пройденных глав. К тому же там времена var и map ещё не было. Короче как вы мне в прошлой теме написали - хочешь понять как это работает - возьми и напиши функцию.

MC-XOBAHCK 26.07.2018 17:34

Цитата:

Сообщение от j0hnik
for (инициализация; условие; выражение )

наверное я безнадёжен.

j0hnik 26.07.2018 17:35

MC-XOBAHCK,
сильно не загоняйтесь, стиль автора это не священный грааль, копировать не надо, извлекайте для себя полезное и пользуйтесь, не более того.


Часовой пояс GMT +3, время: 19:50.