可以在jQuery / Javascript中有条件地使用$ .map项

时间:2013-09-18 10:16:58

标签: javascript jquery

是否可以在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()
                };
              }
            });

谢谢,

标记

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

是的,这是可能的,但您仍需要从回调函数中返回一些内容。您可以返回nullundefined以从结果数组中删除该项目。所以这样的事情应该有效:

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

Checkout the possible return values for the $.map callback in the documentation

  

该功能可以返回:

     
      
  • 已翻译的值,将映射到结果数组
  •   
  • nullundefined,删除项目
  •   
  • 一个值数组,将被展平为完整数组
  •