1

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

谢谢,

标记

4

2 回答 2

2

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

var extrasToSave = arr
  .filter(function (el) { return el.count()  > 0; })
  .map(function (el) {
     return {
        Descr: el.description,
        Pr: el.price,
        Cnt: el.count()
    }
  });
于 2013-09-18T10:26:26.190 回答
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; }
});

$.map在文档中检查回调的可能返回值

该函数可以返回:

  • 翻译后的值,将映射到结果数组
  • nullundefined, 删除项目
  • 一组值,将被展平为完整的数组
于 2013-09-18T10:19:53.533 回答