Javascript对象递归赋值

时间:2013-05-17 15:02:08

标签: javascript object recursion variable-assignment

我有下一个对象:

var END_POINTS = {
        list: {
            members: {
                show: {}
            },
            subscribers:{
                show:{},
                destroy: {}
            }
        },
        user: {}
    }

并希望让对象的每个值都匹配一个值... 像这样:

END_POINTS = {
    list: {
        members: {
            show: true
        },
        subscribers:{
            show:true,
            destroy: true
        }
    },
    user: true
}

1 个答案:

答案 0 :(得分:2)

以下似乎有效:

var END_POINTS = {
    list: {
        members: {
            show: {}
        },
        subscribers:{
            show:{},
            destroy: {}
        }
    },
    user: {}
};

console.log(END_POINTS);

var objAssign = function(obj, value) {
    for (var prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            if (typeof obj[prop] === 'object' && !objEmpty(obj[prop])) {
                objAssign(obj[prop], value);
            }
            else {
                obj[prop] = value;
            }
        } 
    };
};

var objEmpty = function(obj) {
    for (var prop in obj) {
        if (obj.hasOwnProperty(prop)) return false;
    }
    return true;
};

objAssign(END_POINTS, true);

console.log(END_POINTS);