Angular4 - 检查嵌套对象项是否为空

时间:2017-09-15 14:24:28

标签: angular object typeof

我正在检查一个名为" token"的嵌套对象项目。是否为空,在AngularIDE中使用Angular4

if (typeof this.user.data.token !== "undefined")

这是投掷<Cannot read property 'token' of null>

我是否必须检查每个嵌套对象是否存在?

3 个答案:

答案 0 :(得分:3)

你必须......

if (this.user && this.user.data && this.user.data.token) {
}

答案 1 :(得分:0)

当您看到 未定义 null 会有所不同> undefined 这意味着声明了一个变量但它没有值, null 是一个实际的赋值。 undefined也是一个类型,null是一个对象。所以..

 if(!(this.user.data.token == null)); 

如果您想要添加一些其他条件并且操作符||并键入下一个条件,那么应该适合您。

如果您要检查未定义的对象,可以执行类似

的操作
this.user.data.token != undefined && ... 

依旧......

答案 2 :(得分:0)

您可以创建一个可重用的帮助器函数,该函数检查嵌套键是否存在并返回布尔值。

/**
* @param obj: to check the nested key
* @param args: array of location to the nested key to check ['parentNode', 'childNode', 'grandChildNode']
*/
checkNestedKey(obj, args) {
    for (let i = 0; i < args.length; i++) {
        if (!obj || !obj.hasOwnProperty(args[i])) {
            return false;
        }
        obj = obj[args[i]];
    }
    return true;
}

// to check if value exist this.user.data.token
if (this.checkNestedKey(this.user, ['data', 'token'])) {
    // continue here
}