Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.06.2018, 22:15
Новичок на форуме
Отправить личное сообщение для AlePawka Посмотреть профиль Найти все сообщения от AlePawka
 
Регистрация: 01.06.2018
Сообщений: 2

Задачи с книги "Выразительный Js", Написать функцию для создания массива
Всем привет)
решил учить js
и тут задача
Написать функцию range,чтобы она могла принимать необязательный третий аргумент – шаг для построения массива. Если он не
задан, шаг равен единице. Вызов функции range(1, 10, 2) должен будет вернуть [1, 3, 5, 7, 9]. Убедитесь, что она работает с отрицательным шагом так, что вызов range(5, 2, -1) возвращает [5, 4, 3, 2].
С первой частью задания справился с легкостью,а вот во 2м случае
вошел в ступор.
Помогите пожалуйста

Вот мой код
function range(a,b,c) {
    var arr = [];
    if (c == undefined)
        c = 1;
    if (b > a) {
    for (var i = a; i <= b; i += c) arr.push(i);
        }
    else
    {
        for (var i = b; i <= a; i -= Math.abs(c)) arr.push(i);
    }
    console.log(arr);
}
Ответить с цитированием
  #2 (permalink)  
Старый 01.06.2018, 22:23
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

function range(a,b,c) {
    var arr = [];
    c = c == undefined?1:c;
    for (var i = a; a<b?i<= b:i>= b; i += c) arr.push(i);
    console.log(arr);
}
Ответить с цитированием
  #3 (permalink)  
Старый 01.06.2018, 22:27
Новичок на форуме
Отправить личное сообщение для AlePawka Посмотреть профиль Найти все сообщения от AlePawka
 
Регистрация: 01.06.2018
Сообщений: 2

спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 01.06.2018, 22:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

AlePawka,
строка 10 всё тоже самое самое, что строке 5, кроме знака условия
Ответить с цитированием
  #5 (permalink)  
Старый 01.06.2018, 22:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

AlePawka,

function range(a,b,c=1) {
   return Array.from({length : (b - a  + c)/c|0 }, (v,k) => a + k * c)
}
console.log(range(1, 10, 2));
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется программист на QML для создания интерфейса клиентской программы для общения m.simakov Работа 0 11.02.2016 18:07
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Нужен цикл для создания огромного массива apish Общие вопросы Javascript 2 20.09.2012 16:10
Составить алгоритм и программу для решения следующей задачи. Даны два массива X (5), rjabijj Общие вопросы Javascript 2 05.07.2012 22:02
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53