可以在jQuery/Javascript中有条件地映射$.map项

可以在jQuery/Javascript中有条件地映射$.map项,javascript,jquery,Javascript,Jquery,是否可以在jquery中向$.map添加条件 我的代码是: var extrasToSave = $.map(self.extras(), function (extra) { return { Descr: extra.description, Pr: extra.price, Cnt: extra.count()

是否可以在jquery中向$.map添加条件

我的代码是:

var extrasToSave = $.map(self.extras(), function (extra) {
                return {
                    Descr: extra.description,
                    Pr: extra.price,
                    Cnt: extra.count()
                };
            });
我只想映射对象,如果
extra.count()
是大于0的数字。所以伪代码:

var extrasToSave = $.map(self.extras(), function (extra) {
           if (extra.count()>0)
             {
                return {
                    Descr: extra.description,
                    Pr: extra.price,
                    Cnt: extra.count()
                };
              }
            });
谢谢,


标记

是,这是可能的,但是您仍然需要从回调函数返回一些内容。您可以返回
null
undefined
以从结果数组中删除该项。因此,类似这样的方法应该有效:

var extrasToSave = $.map( self.extras(), function ( extra ) {
  if ( extra.count() > 0 ) {
    return { 
      Descr: extra.description,
      Pr: extra.price,
      Cnt: extra.count()
    };
  } else { return undefined; }
});

该函数可以返回:

  • 转换后的值,将映射到结果数组
  • null
    undefined
    ,以删除该项
  • 一个值数组,它将被展平为完整数组

如果不想,甚至不必使用jQuery的map函数。从代码的外观来看,您只是映射了一个对象数组,因此use可以使用本机JS和函数

var extrasToSave = arr
  .filter(function (el) { return el.count()  > 0; })
  .map(function (el) {
     return {
        Descr: el.description,
        Pr: el.price,
        Cnt: el.count()
    }
  });

如果
self.extras()。干杯,马克你不需要显式地
返回未定义的
,不返回任何东西都是一样的。@dav-我总是喜欢显式地使用我的代码。文档中特别提到了返回
null
undefined
。之所以提到这一点,是因为当您不返回任何内容时函数确实返回undefined对不起,但这个答案显然是错误的,“是的,这是可能的,但您仍然需要从回调函数返回某些内容”不是真的。。我喜欢这个解决方案+1.添加一些链接,以参考您使用过的函数的文档,您有一个很好的答案!:)IE不支持本机JS映射和筛选器