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