6

我有一个obj封装一组输入元素的 jQuery 对象。

我正在使用此代码来从每个元素的值中创建一个数组:

$.map(obj, function(elem, i){
    return $(elem).val();
});

问题是有时某些输入字段包含无效值,我想在创建数组的过程中跳过它们。做一个简单的return false似乎并没有跳过元素,而是false在数组中插入 a 。

我想知道是否有一种方法可以在显式使用的情况下实际做到这.each一点。

4

2 回答 2

11

由于它是一个jQuery集合,你可以.map 直接执行然后使用.get,使它变成一个数组。

var values = obj.map(function(){
    return this.value ? this.value : null;
}).get();

注意:上面的检查将返回任何不是假的值。

请参阅jsFiddle 上的测试用例

于 2013-06-16T20:35:53.237 回答
5

我应该尝试返回任何可以解决问题的东西(无效),不知道为什么这没有更早地出现在我的脑海中。

如果你想做同样的事情,这里是修复:

$.map(obj, function(elem, i){
    if($(elem).val().length == 0) return;

    return $(elem).val();
});

编辑

我只是在这里测试了长度并省略了验证代码以保持同一主题

于 2013-06-16T20:28:32.810 回答