ES6 - генерировать массив чисел

Имея googled для этого, я нашел два решения:

    var data = [...Array(10).keys()];
console.log(data);
    var data1 = Array(8).fill().map((_, i) => i);
console.log(data1);

Ответ 1

Вот простое решение, которое работает в codepen:

Array.from(Array(10).keys())

Чтобы быть ясным, Array.from() и Array.keys() требуют ES6 polyfill для работы во всех браузерах.

Ответ 2

Обзор Array.из практических примеров

Array.from также принимает второй аргумент, который используется как функция отображения

let out = Array.from(Array(10), (_,x) => x);
console.log(out);
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Ответ 3

Кажется, проблема в том, что codepen предварительно скомпилирует ваш код с помощью babel es2015-free.

В этом режиме ваш

[...Array(10).keys()];

становится

[].concat(Array(10).keys());

И почему вы видите массив, содержащий итератор.

В режиме es2015 вы получите

function _toConsumableArray(arr) {
  if (Array.isArray(arr)) {
    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
      arr2[i] = arr[i];
    }
    return arr2;
  } else {
    return Array.from(arr);
  }
}
[].concat(_toConsumableArray(Array(10).keys()));

который будет вести себя по желанию.

Подробнее о режимах см. ②ality - Babel 6: свободный режим.