我有一个obj
封装一组输入元素的 jQuery 对象。
我正在使用此代码来从每个元素的值中创建一个数组:
$.map(obj, function(elem, i){
return $(elem).val();
});
问题是有时某些输入字段包含无效值,我想在创建数组的过程中跳过它们。做一个简单的return false
似乎并没有跳过元素,而是false
在数组中插入 a 。
我想知道是否有一种方法可以在不显式使用的情况下实际做到这.each
一点。
由于它是一个jQuery集合,你可以.map
直接执行然后使用.get
,使它变成一个数组。
var values = obj.map(function(){
return this.value ? this.value : null;
}).get();
注意:上面的检查将返回任何不是假的值。
请参阅jsFiddle 上的测试用例。
我应该尝试返回任何可以解决问题的东西(无效),不知道为什么这没有更早地出现在我的脑海中。
如果你想做同样的事情,这里是修复:
$.map(obj, function(elem, i){
if($(elem).val().length == 0) return;
return $(elem).val();
});
编辑
我只是在这里测试了长度并省略了验证代码以保持同一主题