嗯,我知道这是一个很常见的问题,但我试图找到解决办法,但还没有成功。下面是问题陈述:
由于某些条件,我的对象没有值,它是空的{},当我尝试使用Object.keys(ambassador).length或Object.entries(ambassador).length检查该对象的长度时,它将给出错误。
TypeError:不能将未定义或null转换为对象。
代码示例:
const ambassador = Array.isArray(ambassadors)
? ambassadors.find((item) => {
return item.affiliate_id === affiliate.tracking_id;
})
: {};
console.log(ambassador == null); //false
console.log(typeof(ambassador)); // Object
console.log(Object.keys(ambassador).length > 0 ); //TypeError: Cannot convert undefined or null to object.发布于 2019-12-20 09:09:15
因此,我从Kireeti Ganisetti的评论中得到了解决方案,他建议使用LOADASH,它起了作用:)
要在Javascript中检查对象是否为空,请做出以下反应:
import _ from 'lodash';
_.isEmpty(ambassador)发布于 2019-12-20 07:19:00
值null表示有意缺少任何对象值。它是JavaScript的基元值之一,对于布尔操作,它被视为falsy
在读取键之前,试着检查对象是否不是null:
let ambassador = null;
console.log(ambassador == null); //false
console.log(typeof(ambassador)); // Object
if (ambassador)
console.log(Object.keys(ambassador).length > 0 );举个例子:
let ambassador = null;
console.log(ambassador == null); //false
console.log(typeof(ambassador)); // Object
if (ambassador)
console.log(Object.keys(ambassador).length > 0 );
更新:
如果是let ambassador = {};,那么abmassador是truthy,所以您可以检查对象的键:
let ambassador = {};
console.log(ambassador == null); //false
console.log(typeof(ambassador)); // Object
if (ambassador)
console.log(`ambassador`, Object.keys(ambassador).length > 0 );在JavaScript中,真实值是当在布尔上下文中遇到时被认为是真的值。所有值都是真实的,除非它们被定义为falsy (即,除了false,0,0n,"",null,未定义和NaN)。
JavaScript中的真值示例(在布尔上下文中强制为true,从而执行if块):
if (true)
if ({})
if ([])
if (42)
if ("0")https://stackoverflow.com/questions/59421145
复制相似问题