string'properties.dimensions.length'来访问散列{属性:{维度:{长度:23}}}

JavaScript:给出一个string数组:

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

什么是最好的方式来使用这些validation或访问它们(实际上只是想validation密钥是否存在)在一个哈希?

我正在考虑string拆分('。'),但我一直无法真正了解如何使用每个数组值来validation或访问哈希值。

像['属性','尺寸','长度'],然后forEach,以深入,但理想情况下,我想把它转换成代码的等式:

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

但是,随意地说,如果这是一个非常冒险的方法…并且很好! 😀

你可以尝试这样的事情:

 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; } 

并像这样调用它:

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

示范

这是一个recursion的select:

 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)); 

示范