嵌套对象迭代并返回空值键名 nodejs

约翰·多伊

我有一个像下面这样的对象

     var json = {
      "info": {
      "name": {},
      "addr": {
        "strreet": "NYC",
        "zip": 123456789
       }
     }
   }

我想返回它有空对象的键,它可能嵌套在例如上面的json“name”为空所以我想写一个函数并想在这里返回“name”

我已经为下面给出的函数编写了一个函数

function iterate(obj) {
for (var property in obj) {
    if (obj.hasOwnProperty(property)) {
        if (typeof obj[property] == "object") {
            if (JSON.stringify(obj[property]) === '{}') {
                return property
            } else
                iterate(obj[property]);
        } else {}
    }
}
}

现在我正在调用这个函数

var key = iterate(json)
console.log('Key',key)

现在关键是打印 undefined ,任何帮助表示赞赏。

空白

您可以保留一个空白数组并继续推送其中的空属性。最后,您将需要返回此数组以使递归起作用,并且在递归调用该函数的地方,您需要将其内容推送到空属性数组中。

var json = {
  "personInfo": {
    "personAttributesInfo": {
      "location": {
        "city": "New york",
        "state": {},
      }
    }
  },
  "dataInfo": {
    "travelPricing": {},
    "cost": {
      "usd": 12345,
      "someother": {},
    }
  }
};

function iterate(obj) {
  var emptyProperties = [];
  for (var property in obj) {
    if (obj.hasOwnProperty(property)) {
      if (typeof obj[property] == "object") {
        if (Object.keys(obj[property]).length === 0) {
          emptyProperties.push(property);
        } else{
          let x = iterate(obj[property]);
          emptyProperties.push(...x);
        }
      } else {
        continue;
      }
    }
  }
  return emptyProperties;
}

var key = iterate(json)
console.log('Key', key);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章