javascript-具有名称空间/键的搜索对象

我正在尝试编写一个可以在JavaScript对象中查找名称空间和值并返回键的函数.

对此数据进行镜像:

var o = {

    map: {
        lat : -33.86749,
        lng : 151.20699,
        zoom : 12
    },

    filters : {
        animals : {
            dogs: {
                myDog : 'fido'
            }
        }
    }
};

function get(namespace, key){
    //TODO
}

get('filters.animals.dogs', 'myDog')

无论命名空间的深度如何,您将如何构建一个动态执行此功能的函数?

这个函数有点接近,只是它修改了我们当然不需要的原始对象:

var get = function(obj, namespace, key, value) {

    var parts = namespace.split('.');

    for(var i = 0; i < parts.length; i++) {
        if(typeof obj[parts[i]] == 'undefined'){
            obj[parts[i]] = {};
        }

        obj = obj[parts[i]];
    }

    return obj[key] = value;
};

疯狂的原因是我无法暴露物体.它必须保持私有,并且公共方法必须吐出结果.

解决方法:

试试看.

function get(namespace, key) {
    var parts = namespace.split('.'),
        i = 0,
        l = parts.length,
        obj = o;
    while ( i < l ) {
        obj = obj[parts[i]];
        if ( ! obj ) break;
        i++; 
    }
    return obj && obj[key] ? obj[key] : null;
}
上一篇:[操作系统]LINUX进程状态说明


下一篇:ubuntu20.04 安装flomo