寻找直接在对象上深度清理原始属性值的简单解决方案,例如:
var filled = {
levelOneObj: {
property: 'primitive'
levelTwoObj: {
property: 'primitive value'
},
levelTwoArray: ['primitive', 123]
}
}
cleanPrimitives(filled);
var filled = {
levelOneObj: {
levelTwoObj: {
},
levelTwoArray: []
}
}
如果库中已有解决方案,我不想重新发明轮子 - 任何解决方案或帮助都表示赞赏
答案 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);