Чтобы считать только объекты в массиве, вы не можете сделать это:
typeof x == "object"
, поскольку это возвращает true
для объекта,массив, или null
.
Лучше проверить toString
- он вернет [object Object]
для объектов.
const arr = [1,{},[],null,null,'foo',3,4,5,{},{},{},'foo'];
const count = arrObj => arrObj.filter(e => e && e.toString() == "[object Object]").length;
console.log(count(arr));