大家好,我正在努力解决这个问题,但不知道如何将对象类型的数组与对象类型进行比较。。。基本上如何从我的最终计数中排除所有不是";真实的";对象,这就是问题所在:
此函数接受不同数据类型的数组。它应该返回数组中对象数量的计数。
我的代码应该能更好地解释我的意思:
function countTheObjects(arr) {
let howManyObj = 0;
arr.forEach(function (type) {
console.log(typeof type);
if (typeof type === "object" && type !== null) {
howManyObj++;
}
});
return howManyObj;
}
console.log(
countTheObjects([1, {}, [], null, null, "foo", 3, 4, 5, {}, {}, {}, "foo"])
);
最后的计数是5,但应该是4。我试图在条件中添加
(typeof type === "object" && type !== null && type !== [])
但没有结果。我正在设法弄清楚如何把[]..排除在计数之外。。
如果我console.log(typeof[](,结果是object。所以我觉得我处理这个问题的方式不对。
感谢您的支持。
您可以使用Array.isArray((进行检查。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
if (typeof type === "object" && type !== null && !Array.isArray(type)) {
howManyObj++;
}