使用jQuery的$ .map跳过一个元素

时间:2013-06-16 20:26:39

标签: jquery arrays skip

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

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

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

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

我想知道是否有办法在没有明确使用.each的情况下实际执行

2 个答案:

答案 0 :(得分:11)

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

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

注意:上述检查将返回任何非假的值。

请参阅test case on jsFiddle

答案 1 :(得分:5)

我本应该尝试不做任何事情(无效),但是不知道为什么早些时候我没有想到这一点。

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

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

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

编辑

我刚刚在这里测试了长度并省略了验证码以便保持相同的主题