有没有一种方法可以在嵌套对象属性上使用_.omit
?
我希望这种情况发生:
schema = {
firstName: {
type: String
},
secret: {
type: String,
optional: true,
private: true
}
};
schema = _.nestedOmit(schema, 'private');
console.log(schema);
// Should Log
// {
// firstName: {
// type: String
// },
// secret: {
// type: String,
// optional: true
// }
// }
_.nestedOmit
显然不存在,只是_.omit
不会影响嵌套属性,但是应该清楚我在寻找什么。它也不必强调,但以我的经验,它通常只会使事情变得更短,更清晰。
最佳答案
您可以创建一个nestedOmit
mixin来遍历对象以删除不需要的 key 。就像是
_.mixin({
nestedOmit: function(obj, iteratee, context) {
// basic _.omit on the current object
var r = _.omit(obj, iteratee, context);
//transform the children objects
_.each(r, function(val, key) {
if (typeof(val) === "object")
r[key] = _.nestedOmit(val, iteratee, context);
});
return r;
}
});
和一个演示http://jsfiddle.net/nikoshr/fez3eyw8/1/