@sugadu

Объясните, пожалуйста, как работает этот кусок кода?

function range(n) {
  return Array.apply(null, Array(n)).map((_, i) => i + 1); // вот этот
}
console.log(range(9)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]


upd.
Начну сам:
1) Создается массив из n*undefiined элементов
2) Он передается в качестве параметров функции Array
3) Создается новый массив, и заполняется индексами+1 предыдущего массива

Вопрос: Тогда почему не работает просто: Array(n).map((_, i) => i + 1);
  • Вопрос задан
  • 354 просмотра
Решения вопроса 1
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Тогда почему не работает просто: Array(n).map((_, i) => i + 1);

Если создавать массив с помощью конструктора ( new Array(n) ), то массив создаётся пустым и имеет только длину. Для того, чтобы это было более наглядно и понятно - примерчик
var arr1 = new Array(3),
    arr2 = [undefined, undefined, undefined];
// в консоли визуально массивы абсолютно схожи
console.log(arr1); //  [undefined, undefined, undefined]
console.log(arr2); //  [undefined, undefined, undefined]
// Но попробуем посмотреть их свойства
console.log(Object.getOwnPropertyNames(arr1)); // ["length"]
console.log(Object.getOwnPropertyNames(arr2)); // ["0", "1", "2", "length"]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы