Tengo un objeto anidado como
{ name: "John", parent:{ parent:{ parent:{ } } } } Ahora quiero obtener el nivel del objeto principal principal o, básicamente, cuántas veces se ha anidado un objeto principal. En este caso, debería obtener una salida de 3 .
También podrías hacerlo recursivamente así:
const obj = { name: "John", parent:{ parent:{ parent:{ parent:{ parent:{ parent:{ } } } } } } } function findk(o,k,l=0){ if (o[k]) l=findk(o[k],k,++l) return l } console.log(findk(obj,"parent"))Puede adoptar un enfoque recursivo e iterativo al verificar el valor entregado, si es una matriz, luego verificar la clave deseada e iterar todos los valores de la matriz o devolver cero.
const getCount = (object, key) => object && typeof object === 'object' ? (key in object) + Object .values(object) .reduce((s, o) => s + getCount(o, key), 0) : 0; console.log(getCount({ name: "John", parent: { parent: { parent: {} } } }, 'parent')); let obj = { // treat it like a tree name: "John", parent: { parent: { parent: {} } } } const findDepth = (root, key) => { let depth = 0; let loop = (obj) => { if (obj && obj[key]) { loop(obj[key]); depth++; } } loop(root); return depth; } const result = findDepth(obj, 'parent') console.log(result);