是否可以在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()
};
}
});
谢谢,
标记
答案 0 :(得分:2)
如果你不想,你甚至不必使用jQuery的map函数。从代码的外观来看,您只是映射一个对象数组,因此可以使用本机JS map和filter函数。
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)
是的,这是可能的,但您仍需要从回调函数中返回一些内容。您可以返回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; }
});
Checkout the possible return values for the $.map
callback in the documentation
该功能可以返回:
- 已翻译的值,将映射到结果数组
null
或undefined
,删除项目- 一个值数组,将被展平为完整数组