Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.07.2018, 16:54
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Оцените решение задачки, пжл
Читаю книжку "Выразительный 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-программистом и пока прокачиваюсь знаниями, нужно и стиль подтягивать к тому как это делают профи.
Ответить с цитированием
  #2 (permalink)  
Старый 26.07.2018, 16:59
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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

я б так решил
function reverseArray(arr) {
    return arr.map((el,i)=> arr[arr.length-1-i]);
}
Ответить с цитированием
  #3 (permalink)  
Старый 26.07.2018, 17:11
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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

и как бы пишет что рекурсия зато более проста для восприятия, хотя для меня цикл было намного проще понять.
так что вот так вот.
Ответить с цитированием
  #4 (permalink)  
Старый 26.07.2018, 17:14
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от MC-XOBAHCK
У автора идёт логическое решение в условии цикла, а у меня же внутри цикла.
Это не в условии, условие там в середине, у автора естественно, у вас нет.
let i = array.length - 1;
for (; i >= 0;) {
    // ...
    i--;
}

let i = array.length;
while (i--) {
    // ...
}

У массива есть нативный реверс array.reverse()

Последний раз редактировалось Rise, 26.07.2018 в 17:25.
Ответить с цитированием
  #5 (permalink)  
Старый 26.07.2018, 17:21
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

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

Я просто заметил что у меня всегда однотипная разница - у автора всегда логика в условие попадает.
Вот меня и взяло сомнение, может стоить правильно делать в его стиле, а то как я делаю не используется в серьёзной разработке.
Ответить с цитированием
  #6 (permalink)  
Старый 26.07.2018, 17:25
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от MC-XOBAHCK
Там в задачках оговаривается что без использования методов.
output.push(array[i]);
ох и автор
Ответить с цитированием
  #7 (permalink)  
Старый 26.07.2018, 17:26
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Сообщение от Rise
Это не в условии, условие там в середине, у автора естественно, у вас нет.
Правильно говорить "В параметрах цикла" ? или условиях?

Там в той книжке у него и в if() обычно логика засунута, вот я всё в кучу как условие определил, заметив что это как стиль написания кода идёт.
Ответить с цитированием
  #8 (permalink)  
Старый 26.07.2018, 17:29
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

for (инициализация; условие; выражение )
Ответить с цитированием
  #9 (permalink)  
Старый 26.07.2018, 17:30
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Сообщение от j0hnik
ох и автор
Это не автор, а я уже так накрутил. Имеется ввиду что работать по материалам пройденных глав. К тому же там времена var и map ещё не было. Короче как вы мне в прошлой теме написали - хочешь понять как это работает - возьми и напиши функцию.
Ответить с цитированием
  #10 (permalink)  
Старый 26.07.2018, 17:34
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конкурс CardioQVARK - разработка алгоритма определения курильщика по кардиограмме ilyad555 Работа 2 10.03.2016 12:51
Решение задачки, нигде не могу найти. Mr_ZET Общие вопросы Javascript 6 10.11.2014 08:13
Не работает скрипт с setTimeout (гляньте опытным глазом) пжл. Benos Firefox/Mozilla 4 24.03.2012 20:18
Решение задачи с объектом math biz87 Общие вопросы Javascript 4 26.08.2011 13:50
Физические задачки на java script scvorec Общие вопросы Javascript 6 22.12.2009 00:31