Ответ 1
Вот простое решение, которое работает в codepen:
Array.from(Array(10).keys())
Чтобы быть ясным, Array.from()
и Array.keys()
требуют ES6 polyfill для работы во всех браузерах.
Имея googled для этого, я нашел два решения:
var data = [...Array(10).keys()];
console.log(data);
var data1 = Array(8).fill().map((_, i) => i);
console.log(data1);
Вот простое решение, которое работает в codepen:
Array.from(Array(10).keys())
Чтобы быть ясным, Array.from()
и Array.keys()
требуют ES6 polyfill для работы во всех браузерах.
Обзор Array.из практических примеров
Array.from
также принимает второй аргумент, который используется как функция отображения
let out = Array.from(Array(10), (_,x) => x);
console.log(out);
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Кажется, проблема в том, что 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: свободный режим.