【问题标题】:Get the level of a key in a Object [closed]获取对象中键的级别[关闭]
【发布时间】:2019-10-01 06:53:31
【问题描述】:

现在我正在使用 JSON 对象来比较信息,我不知道是否有办法获得特定键的深度级别。

例如,我有这个 JSON 对象:

{
   hi : "everyone",
   hereIs : {
      an : "Object"
   }
}

而且我需要在 for ... in 循环中知道每个键的深度级别:

hi is in level 0
hereIs is in level 0
an is in level 1

我目前拥有的是:

 // Loop through the first object
     for (key in obj1) {
          if (obj1.hasOwnProperty(key)) {
               compare(obj1[key], obj2[key], key);
          }
     }

如果使用“比较”功能来验证对象中的信息是否相等,如果不相等,则将信息添加到第三个对象中,我想知道的是如何获得密钥的级别在 obj1 中并将其传递给“比较”函数。

感谢您的帮助。

【问题讨论】:

标签: javascript object tree key depth


【解决方案1】:

你可以试试这个:

function showDepth(obj, lvl){
  if(!lvl) lvl = 0;
  Object.keys(obj).map(key => {
    console.log(key + ' is in level ' + lvl);
    if(typeof obj[key] === "object") {
      showDepth(obj[key], lvl+1);
    }
  });
}
showDepth({
   hi : "everyone",
   hereIs : {
      an : "Object"
   }
});

【讨论】:

    【解决方案2】:

    你可以使用JSON.stringifyreplacer如下:

    const obj = {
      hi: "everyone",
      hereIs: {
        an: "Object",
        and: {
          another: "one"
        }
      }
    }
    
    let level = -1;
    
    JSON.stringify(obj, function(k, v) {
      if (level >= 0)
        console.log(k, "is in level", level);
      if (typeof v == "object")
        level++;
      return v;
    });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多