[英]For empty object giving the TypeError: Cannot convert undefined or null to object
好吧,我知道这将是一个非常常见的问题,但我试图找到解决方案但还没有运气。 所以这里是问题陈述:
由于某些条件,我的对象没有值并且它是空的{}
并且当我尝试使用Object.keys(ambassador).length
OR Object.entries(ambassador).length
检查此对象的长度时,它给了我错误
类型错误:无法将 undefined 或 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.
所以,我从 Kireeti Ganisetti 的评论中得到了解决方案,他建议使用 LOADASH 并且它有效:)
在 Javascript 中检查对象是否为空 - React:
import _ from 'lodash';
_.isEmpty(ambassador)
值 null 表示有意缺少任何对象值。 它是 JavaScript 的原始值之一,对于布尔运算被视为假
在读取键之前尝试检查您的对象是否为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 中,真值是在布尔上下文中遇到时被认为是真的值。 所有值都是真值,除非它们被定义为假(即,假、0、0n、""、null、未定义和 NaN 除外)。
JavaScript 中的真值示例(在布尔上下文中将被强制为真,从而执行 if 块):
if (true)
if ({})
if ([])
if (42)
if ("0")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.