【问题标题】:How to check whether a JSON object key is an object or string? [duplicate]如何检查 JSON 对象键是对象还是字符串? [复制]
【发布时间】:2021-02-28 08:57:32
【问题描述】:

所以现在,我创建了一个 JSON 对象的示例,其中:

var myObj = {
    address: {
        0: ["41 Lake Avenue"]
    },
    name: "jake"
}

myObj 本身作为一个整体是一个 JSON 对象,在其中,我有两个键,分别是地址和名称。所以 address key 的值也是一个 Object,因为它在大括号中,其中 name key 值只是一个字符串。

我想在 javascript 中写一个简单的检查来检查 myObj 中的 keys 是否是对象或字符串。因此,如果它的一个对象,它返回true,如果它的不是一个对象,它返回false。因此,地址为真,姓名为假。

我试着四处寻找类似于 isArray() 的 isObject() 方法,但显然我找不到,所以我需要一些帮助,所以我在下面写了一个伪代码用于逻辑:

for (i=0;i<2;i++) {
   if myObj[i] is Object {
      return true;}
   else{
      return false;}
}

【问题讨论】:

  • 你可以使用typeof来检查它是否是字符串。
  • 我是新来的,很少用 JS 编程,但 wtf 是这些 cmets 和答案。你做错了整个事情。用于for (k in myObj) { console.log(typeof(myObj[k]) == 'string'); }
  • typeof 运算符返回一个字符串,表示未计算的操作数的类型:for (let [key, value] of Object.entries(myObj)) { if( value &amp;&amp; typeof value =='object'){return true;} else{ return false;}}

标签: javascript


【解决方案1】:

您需要使用 typeof(var) 运算符: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

对象:

typeof yourVariable === 'object' && yourVariable !== null

对于字符串:

typeof yourVariable === 'string'

【讨论】:

    【解决方案2】:
    if (typeof varible === 'object') {
        // is object
    }
    

    但 Null 也被识别为对象。所以你也可以证明这一点。

    【讨论】:

      【解决方案3】:

      您可以使用typeof。

      注意:这个问题不清楚,也没有解释如果有多个键值作为对象会发生什么。因为下面的函数会在遇到值为对象的键时立即返回

      var myObj = {
        address: {
          0: ["41 Lake Avenue"]
        },
        name: "jake"
      }
      
      
      function isObject(obj) {
        for (let keys in obj) {
          if (typeof obj[keys] === 'object' && obj[keys] !== null) {
            return true
          }
        }
      }
      
      console.log(isObject(myObj))

      【讨论】:

      • 我认为使用for (let [key,value] of Object.entries(myObj)) 会更好,因为他获得了属性名称。 example here
      • 在 for 循环之后也可能是 return false ;) ?
      猜你喜欢
      • 2017-06-18
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多