使用Underscore.js从对象中删除空属性/虚假值

user1082754:

我有一个具有多个属性的对象。我想删除任何具有虚假值的属性。

这可以通过compacton数组来实现,但是对象呢?

gion_13:

您可以制作自己的下划线插件(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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章