用于访问哈希的字符串'properties.dimensions.length' {属性: {维度: {长度: 23}}}



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

演示

最新更新