javascript - 如何检查对象中的key是一个对象

标签 javascript

我的练习是使用 for...in 打印出对象中的所有键,打印出嵌套对象的键。但我不检查 nameValue 的值是否为对象

我尝试使用 for...in 但值检查的结果未定义

// My Exercises 
var apartment = {
  bedroom: {
    area: 20,
    bed: {
      type: 'twin-bed',
      price: 100
    }
  }
};

// Tried
function checkObj(objs) {
  for (var obj in objs) {
    console.log(obj);
    var check = objs['obj'];
    console.log(check);
  }
}
checkObj(apartment);

最佳答案

在 JavaScript 中,typeof nulltypeof []typeof {} 将返回 'object'

您可以检查 objectconstructor.name 是否等于 'Object'

function checkObj(objs) {
    for (var obj in objs) {
        var isObj = objs[obj] && objs[obj].constructor.name === 'Object';
        console.log('is Object:', isObj);
    }
}

checkObj(apartment);

正如@ZivBen-Or 在评论中建议的那样,你也可以这样检查

Object.prototype.toString.call(obj[key]) === "[object Object]"

关于javascript - 如何检查对象中的key是一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56680024/

相关文章:

javascript - 使用 setInterval 的 Ajax 调用不会从数据库获取新数据

javascript - 如果一个函数组件具有内部可变状态,它可以被认为是纯函数组件吗?

javascript - AngularJS 中的重定向无法部分工作

javascript - 隐藏初始 3d 变换动画

javascript - Blur.js 中的缓存前缀是什么?

javascript - 用户注册时在谷歌地图中添加标记

javascript - 提交输入不会触发任何内容

javascript - 如何传递参数jquery并返回函数值

javascript - 如何使用 Backbone.Marionette 构建一个用于将项目创建到列表中的应用程序?

javascript - 使用正则表达式删除字符串中的键值