cadena ‘properties.dimensions.length’ para acceder al hash {propiedades: {dimensiones: {longitud: 23}}}

JavaScript: dada una serie de cadenas:

['properties.dimensions.length', 'properties.name'] 

¿Cuál sería la mejor manera de usarlos para validarlos o acceder a ellos (de hecho, solo quiero verificar si la clave existe) en un hash?

Estaba pensando en la división de cadenas (‘.’) Pero no he podido entender realmente cómo cada uno de los valores de la matriz se podría usar para validar o acceder al valor desde un hash.

como [‘propiedades’, ‘dimensiones’, ‘longitud’] y luego, para Eso, para profundizar, pero lo ideal sería convertir eso en el equivalente de código:

 myProperties['properties']['dimensions']['length'] 

Pero siéntase libre de decir si este es un enfoque totalmente intrépido … ¡y sea agradable! :-RE

Podrías probar algo como esto:

 function hasProperty(obj, props) { if (typeof props === "string") return hasProperty(obj, props.split(".")); for(var i = 0; i < props.length; i++) { if (props[i] in obj) obj = obj[props[i]]; else return false; } return true; } 

Y llámalo así:

 var propPath = 'properties.dimensions.length'; console.log(hasProperty(myProperties, propPath)); 

Demostración

Y aquí hay una alternativa recursiva:

 function hasProperty(obj, props) { if (typeof props === "string") return hasProperty(obj, props.split('.')); return props.length == 0 || props[0] in obj && hasProperty(obj[props.shift()], props); } var propPath = 'properties.dimensions.length'; console.log(hasProperty(myProperties, propPath)); 

Demostración