现在我使用JSON Objects来比较信息,我不知道是否有办法获得特定键的深度级别。例如,我有这个 JSON 对象:{ hi : "everyone", hereIs : { an : "Object" }}我需要在for ... in循环中知道每个键的深度级别:hi is in level 0hereIs is in level 0an is in level 1我目前所拥有的是: // Loop through the first object for (key in obj1) { if (obj1.hasOwnProperty(key)) { compare(obj1[key], obj2[key], key); } }“比较”功能如果用来验证对象中的信息是否相等,如果不相等,则将信息添加到第三个对象中,我想知道的是如何获得 obj1 中的密钥级别和将其传递给“比较”函数。感谢您的帮助。
2 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
你可以试试这个:
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"
}
});
米脂
TA贡献1836条经验 获得超3个赞
您可以使用JSON.stringify'sreplacer如下:
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;
});
添加回答
举报
0/150
提交
取消