javaScript:给定一系列字符串:
['properties.dimensions.length', 'properties.name']
在哈希中使用这些方法是什么最好的方法来验证或访问它们(实际上只想验证键是否存在)?
我正在考虑字符串拆分('。'),但我无法真正理解如何使用每个数组值来验证或从哈希访问该值。
喜欢['properties','dimensions','length'],然后为此进行钻探,但理想情况下,我想将其变成代码等效:
myProperties['properties']['dimensions']['length']
,但请随时说这是否是一种完全骇人听闻的方法……请好!:d
您可以尝试这样的事情:
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));
演示
这是递归替代方案:
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));
演示