Construcción de lista de propiedades recursiva
Para recorrer un objeto complejo y extraer una lista jerárquica de sus propiedades, considere usar una función recursiva. Esta técnica captura eficazmente las relaciones anidadas dentro de la estructura del objeto.
Nuestro objeto de muestra, con sus propiedades anidadas, sirve como ejemplo:
var object = {
aProperty: {
aSetting1: 1,
aSetting2: 2,
aSetting3: 3,
aSetting4: 4,
aSetting5: 5
},
bProperty: {
bSetting1: {
bPropertySubSetting : true
},
bSetting2: "bString"
},
cProperty: {
cSetting: "cString"
}
}
Para construir jerárquicamente la lista deseada de claves de propiedad, podemos emplear una función recursiva como esta:
function iterate(obj, stack) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object") {
iterate(obj[property], stack '.' property);
} else {
console.log(property " " obj[property]);
$('#output').append($("").text(stack '.' property))
}
}
}
}
iterate(object, '')Esta función opera de forma recursiva, comenzando con el objeto inicial y una pila vacía. A medida que explora el objeto, construye la cadena de pila que representa la ruta jerárquica a cada propiedad.
- Para propiedades de tipo primitivo, la función registra la clave de propiedad y su valor.
- Para objetos anidados, la función se llama a sí misma de forma recursiva, pasa el objeto anidado y agrega la clave de propiedad a la cadena de la pila.
El resultado es una lista de claves de propiedad, que captura la estructura jerárquica del objeto original. .
Esta solución integra eficazmente la recursividad con la iteración de propiedades, proporcionando un enfoque integral para construir una lista jerárquica de propiedades de objetos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3