Как создать массив с числами от 1 до 50 и вывести их в JavaScript?
Что проверяют
Базовое владение массивами: знаете ли вы что-то кроме цикла с push и понимаете ли, чем способы отличаются. Следом почти всегда просят записать то же одной строкой, а потом вывести числа не в консоль, а на страницу.
Как отвечать
Покажите два-три способа и скажите, какой выбрали бы сами:
- цикл
for:for (let i = 1; i <= 50; i++) numbers.push(i);. Самый понятный вариант, границы видны сразу; Array.from:Array.from({ length: 50 }, (_, i) => i + 1). Одна строка, второй аргумент работает какmap, обычно именно этот вариант и ждут;- спред по
keys():[...Array(50).keys()].map(i => i + 1). Работает, но читается хуже, и про сдвиг на единицу легко забыть.
Вывод зависит от задачи. Для отладки хватит console.log(numbers) или console.table(numbers). Если числа нужны на странице, создайте элементы li через document.createElement, задайте им textContent и добавьте в список одним вызовом list.append(...items) или через DocumentFragment. Так браузер перестраивает страницу один раз, а textContent не даёт случайно внедрить разметку. В React это numbers.map(n => <li key={n}>{n}</li>), и здесь стоит сказать, зачем нужен key.
Если спросят про производительность, честный ответ такой: на 50 элементах разницы между способами нет, выбирают по читаемости.
Где спотыкаются
Пишут new Array(50).map((_, i) => i + 1) и получают массив из пустых ячеек. map пропускает дыры, колбэк не вызывается ни разу. Нужен Array.from или fill() перед map.
Ошибаются на границе: i < 50 даёт 49 чисел, а Array(50).keys() начинается с нуля. Проверьте себя вслух: длина 50, первый элемент 1, последний 50.
Выводят числа на страницу через innerHTML += внутри цикла. Каждая итерация заново разбирает всю разметку списка. На 50 элементах это незаметно, но на интервью такой код выдаёт привычку, которая больно бьёт на больших данных.