Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задачи с книги "Выразительный Js", Написать функцию для создания массива (https://javascript.ru/forum/misc/73975-zadachi-s-knigi-vyrazitelnyjj-js-napisat-funkciyu-dlya-sozdaniya-massiva.html)

AlePawka 01.06.2018 22:15

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

j0hnik 01.06.2018 22:23

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);
}

AlePawka 01.06.2018 22:27

спасибо!

рони 01.06.2018 22:35

AlePawka,
строка 10 всё тоже самое самое, что строке 5, кроме знака условия

рони 01.06.2018 22:57

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));


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