Как создать массив, содержащий 1 ... N - PullRequest
849 голосов
/ 19 сентября 2010

Я ищу любые альтернативы ниже для создания массива JavaScript, содержащего от 1 до N, где N известно только во время выполнения.

var foo = [];

for (var i = 1; i <= N; i++) {
   foo.push(i);
}

Мне кажется, что должен быть способ сделать это без цикла.

Ответы [ 56 ]

0 голосов
/ 01 июля 2014

Для небольших диапазонов срез хорош.N известен только во время выполнения, поэтому:

[0, 1, 2, 3, 4, 5].slice(0, N+1)
0 голосов
/ 14 февраля 2019

'_'.repeat(5).split('').map((_, i) => i + 1) даст [1, 2, 3, 4, 5]

0 голосов
/ 04 февраля 2014

Есть небольшая функция, она позволяет использовать конструкцию типа [1, 2] .range (3, 4) -> [1, 2, 3, 4] также работает с отрицательными параметрами. Наслаждайтесь.

Array.prototype.range = function(from, to)
{
   var range = (!to)? from : Math.abs(to - from) + 1, increase = from < to;
   var tmp = Array.apply(this, {"length": range}).map(function()
      {
         return (increase)?from++ : from--;
      }, Number);

   return this.concat(tmp);
};
0 голосов
/ 22 января 2019

Azle имеет служебную функцию под названием create_array , которая предоставляет вам ряд опций:

Создание массива от 0 до 5 :

az.create_array(0, 5)

[0, 1, 2, 3, 4, 5

Создать массив от 1 до 5 :

az.create_array(1, 5)

[1, 2, 3, 4, 5]

Создайте массив из 5 массивов :

az.create_array(1, 5, ['apples','carrots','oranges'])

[[яблоки »,« морковь »,"апельсины"], ["яблоки", "морковь", "апельсины"], ["яблоки", "морковь", "апельсины"], ["яблоки", "морковь", "апельсины"], ["яблоки""," морковь "," апельсины "]]

Создать массив из 5 объектов :

az.create_array(1, 5, {"color" : "orangered"})

[{color:" orangered "}, {color: "orangered"}, {color: "orangered"}, {color: "orangered"}, {color: "orangered"}]

Создать массив из 6 случайных чисел :

az.create_array(0,5,'random') // default draws from 10

[9, 5, 4, 6, 9, 7]

Создать массив из 6 случайных чисел, взятых из 1000 :

az.create_array(0,5,'random', 1000)

[180, 372, 678, 142, 314, 438]

Здесь находится FIDDLE

0 голосов
/ 07 июня 2019

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

const start = 10;
const end = 30;    
const difference = Math.abs(start-end);
const rangeArray = new Array(difference + 1).fill(undefined).map((val, key) => {
    return start > end ? start - key : start + key;
})
0 голосов
/ 02 января 2016

Array.prototype.fill ()

a = Object.keys( [].fill.call({length:7}, '' ) ).map(Number)
a.pop();
console.debug(a)

[0, 1, 2, 3, 4, 5, 6]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...