Получение шагов чисел между числами в Javascript

#javascript #arrays #numbers

#javascript #массивы #числа

Вопрос:

Я хотел бы получить массив из 26 чисел, начинающихся 1 и заканчивающихся 42 .

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

В идеале я бы хотел, чтобы это было многоразовой функцией, что-то вроде:

 numberRange(lower, upper, steps)
  

В качестве простого примера, если бы я сделал:

 numberRange(2, 10, 5)
  

Это вернет: [2, 4, 6, 8, 10] .

Ответ №1:

Решено!

 function getRange(upper, lower, steps) {
  const difference = upper - lower
  const increment = difference / (steps - 1)
  return [lower, ...Array(steps - 2).fill('').map((_, index) => 
    lower   (increment * (index   1))
  ), upper]
}
  

Ответ №2:

Уверен, что просто разделение сработает:

 function numberRange(upper, lower, steps) {
    return new Array(steps   1).fill(undefined).map((v, idx) => (upper / steps) * (idx   1));
}
  

Комментарии:

1. Если я это сделаю numberRange(10, 2, 5) , это вернет мне 6 чисел : [1.6, 3.2, 4.8, 6.4, 8, 9.6] . Удаление steps 1 исправляет это, однако я бы хотел, чтобы числа начинались с 2 и заканчивались на 10.

2. Хорошо @gosseti У меня была опечатка, исправил ее — теперь она работает для вас?

3. Не повезло с этим. Я все еще возвращаю слишком много чисел, а диапазон начинается и заканчивается слишком высоким.