我有一个具有多个属性的对象。我想删除任何具有虚假值的属性。
这可以通过compact
on数组来实现,但是对象呢?
您可以制作自己的下划线插件(mixin):
_.mixin({
compactObject: function(o) {
_.each(o, function(v, k) {
if(!v) {
delete o[k];
}
});
return o;
}
});
然后将其用作本机下划线方法:
var o = _.compactObject({
foo: 'bar',
a: 0,
b: false,
c: '',
d: null,
e: undefined
});
正如@AndreiNeculau 指出的那样,此混合会影响原始对象,而原始的compact
下划线方法将返回数组的副本。
为了解决此问题并使我们的compactObject
行为更像表弟,这是一个较小的更新:
_.mixin({
compactObject : function(o) {
var clone = _.clone(o);
_.each(clone, function(v, k) {
if(!v) {
delete clone[k];
}
});
return clone;
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句