可以在jQuery/Javascript中有条件地映射$.map项
是否可以在jquery中向$.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()
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映射和筛选器