var a = [5, 12];
var b = [];
a[99] = 7;
for (var i = 0; i < a.length; i++) {
if (a[i] != undefined)
b.push(Math.pow(a[i], 2));
console.log(b[i]);
}
for (var i in a) {
b.push(Math.pow(a[i], 2));
console.log(b[i]);
}
Вопрос: почему в консоли не выводится квадрат 99 элемента?
Потому что вы записываете не то, что считываете.
b.push записывает элемент в "хвост" массива, по индексу b.length.
Вы дописываете в b элементы только когда натыкаетесь на не-undefined элемент в a. Поэтому когда цикл натыкается на undefined в a, величина b.length отстаёт на 1 от i. А у вас там в массиве a довольно внушительная дыра, сквозь которую видно одни undefined.
И получается, что число 49 в вашем массиве квадратов находится под индексом 2, а не 99, где вы ожидаете его увидеть.
Что делать?
Старайтесь соблюдать в коде однородность. Если выводите b[i] то записывать есть смысл, как b[i] = значение. Или, что может быть даже лучше, сохранять вставляемое значение в локальную переменную и выводить где-то рядом со вставкой.
Т.к. метод push() добавляет элементы и присваивает последовательные индексы, то индексы элементов в b будут 0, 1, 2, тогда как в а индексы элементов 0, 1, 99, поэтому индексация в массивах а и b будет отличаться
var a = [5, 12];
var b = [];
a[99] = 7;
for (var i = 0; i < a.length; i++) {
if (a[i] != undefined) {
b.push(Math.pow(a[i], 2));
console.log(b[b.length - 1]);
}
}
for (var i in a) {
b.push(Math.pow(a[i], 2));
console.log(b[b.length - 1]);
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники