首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于空对象,给出TypeError:无法将未定义或null转换为对象

对于空对象,给出TypeError:无法将未定义或null转换为对象
EN

Stack Overflow用户
提问于 2019-12-20 07:08:05
回答 2查看 419关注 0票数 0

嗯,我知道这是一个很常见的问题,但我试图找到解决办法,但还没有成功。下面是问题陈述:

由于某些条件,我的对象没有值,它是空的{},当我尝试使用Object.keys(ambassador).lengthObject.entries(ambassador).length检查该对象的长度时,它将给出错误。

TypeError:不能将未定义或null转换为对象。

代码示例:

代码语言:javascript
复制
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.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-20 09:09:15

因此,我从Kireeti Ganisetti的评论中得到了解决方案,他建议使用LOADASH,它起了作用:)

要在Javascript中检查对象是否为空,请做出以下反应:

代码语言:javascript
复制
import _ from 'lodash';
_.isEmpty(ambassador)
票数 1
EN

Stack Overflow用户

发布于 2019-12-20 07:19:00

正如mdn所说

值null表示有意缺少任何对象值。它是JavaScript的基元值之一,对于布尔操作,它被视为falsy

在读取键之前,试着检查对象是否不是null

代码语言:javascript
复制
let ambassador = null;
console.log(ambassador == null); //false
console.log(typeof(ambassador)); // Object
if (ambassador)
    console.log(Object.keys(ambassador).length > 0 );

举个例子:

代码语言:javascript
复制
let ambassador = null;
console.log(ambassador == null); //false
console.log(typeof(ambassador)); // Object
if (ambassador)
    console.log(Object.keys(ambassador).length > 0 );

更新:

如果是let ambassador = {};,那么abmassadortruthy,所以您可以检查对象的键:

代码语言:javascript
复制
let ambassador = {};
console.log(ambassador == null); //false
console.log(typeof(ambassador)); // Object
if (ambassador)
    console.log(`ambassador`, Object.keys(ambassador).length > 0 );

正如mdn所说

在JavaScript中,真实值是当在布尔上下文中遇到时被认为是真的值。所有值都是真实的,除非它们被定义为falsy (即,除了false,0,0n,"",null,未定义和NaN)。

JavaScript中的真值示例(在布尔上下文中强制为true,从而执行if块):

代码语言:javascript
复制
if (true)
if ({})
if ([])
if (42)
if ("0")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59421145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档