JavaScript深空对象

时间:2014-10-30 19:25:41

标签: javascript

寻找直接在对象上深度清理原始属性值的简单解决方案,例如:

var filled = {
   levelOneObj: {
      property: 'primitive'
      levelTwoObj: {
         property: 'primitive value'
      },
      levelTwoArray: ['primitive', 123]
   }
}

cleanPrimitives(filled);


var filled = {
   levelOneObj: {
      levelTwoObj: {
      },
      levelTwoArray: []
   }
}

如果库中已有解决方案,我不想重新发明轮子 - 任何解决方案或帮助都表示赞赏

1 个答案:

答案 0 :(得分:1)

这应该有效:

function clean_obj(obj) {
    for(var k in obj) {
        if(typeof obj[k] == "object"
           && obj[k] !== null
           && !(obj[k] instanceof Array)
           && !(obj[k] instanceof String)
           && !(obj[k] instanceof Number)) {

            clean_obj(obj[k]);
            continue;
        }

        switch(typeof obj[k]) {
            case 'string':
            case 'number':
                delete obj[k];
                break;

            default:
                obj[k] = [];
        }
    }
}

用法:

var my_obj = {..};

clean_obj(my_obj);