Javascript测试对象是否有任何未定义的键或为空

时间:2018-01-24 06:11:40

标签: javascript object

当我尝试使用Object.keys()读取其键时,我有一个正在评估为未定义的对象。但是,当我执行Object.keys()。length时,我得到1。

如果除了undefined或null之外的任何键,我如何测试对象是否存在。

我已尝试过以下操作,但仍然会出错。我基本上只是检查第一个元素,看它是否为null或未定义。我猜测可能有更好的方法来运行这种检查。

我已经搜索并查看了处理搜索特定属性的案例,但这不是我的对象设置方式。我实际上有一个嵌套对象的对象。 Player1Player2可以是任何值。

var data =
    { 
      player1:
       { team: team1,
         score: 6 },
      player2:
       { team: team2,
         score: 4} 
    }

这是我的对象也可以是这样的,当我尝试循环并在表中显示它时,它会导致显示undefined

{ undefined:
   { team: undefined,
     score: '0'} }

你可以看到做长度检查将返回1.所以我猜我必须检查第一个元素data[0]?该检查有效,但这是处理此问题的最佳方法吗?

if (Object.keys(data[0]) === null){
do something
}

2 个答案:

答案 0 :(得分:4)

if (Object.keys(data).length === 0){
    // There are no keys
}

同时检查data本身不是null还是undefined

if (!data || typeof data !== "object" || Object.keys(data).length === 0) {
    // This is either a null, undefined, not an object, or an object with no keys
}

答案 1 :(得分:4)

  

我有一个正在评估为未定义的对象

因为data[0] 未定义

直接使用

if ( Object.keys( data ).length == 0 )
{
   do something
}