нужно через forEach вывести только числа из массива

let a3 = [2, "hello", 3, "hi", 4, "Mazai"];
let a3_res = a3.forEach(function(elem, index) {
  if (a3 == Number) {
    console.log(elem);
  }
});


Ответы (3 шт):

Автор решения: Igor

let a3 = [2, "hello", 3, "hi", 4, "Mazai"];
let a3_res = a3.filter(function(elem) {
  return typeof elem == "number";
});
console.log(a3_res);

→ Ссылка
Автор решения: fortavey

Если У Вас задача сделать это именно при помощи forEach, то элементы в новый массив нужно добавлять принудительно, поскольку forEach это метод, который просто проходит по массиву, ничего не возвращая.

let a3 = [2, "hello", 3, "hi", 4, "Mazai"];
let a3_res = [];
a3.forEach(function(elem) {
  if(typeof elem == "number") a3_res.push(elem);
});
console.log(a3_res);
→ Ссылка
Автор решения: DiD

let a3 = [
           -Infinity,  // минус бесконечность
           false,      // не число
           NaN,        // не число
           2.4e-3,     // 0.0024
           '',         // не число
           '-1',       // не число
           null,       // не число
           0,          // 0
           Number,     // не число
           '1',        // не число
           undefined,  // не число
           2,          // 2
           "hello",    // не число
           3,          // 3
           Math.E,     // 2.7
           "hi",       // не число
           4,          // 4
           "Mazai",    // не число
           '2e5',      // не число
           Number(1),  // 1
           0xffff,     // 65535
           new Number, // 0
           true,       // не число
           Infinity,   // плюс бесконечность,
           23497654337n// не число 
         ];
const a3_res = [];
const isNum=v=>'[object Number]' == Object.prototype.toString.call(v) && ! isNaN(v);
a3.filter(isNum)
  .map(v=>+v)
  .forEach(v=>a3_res.push(v));
a3_res.forEach(v=>console.log(v));

→ Ссылка