我有一个像下面这样的对象
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] 删除。
我来说两句