6

obj入力要素のセットをカプセル化するjQuery オブジェクトがあります。

各要素の値から配列を作成するために、このコードを使用しています。

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

問題は、一部の入力フィールドに無効な値が含まれている場合があり、配列を作成する過程でそれらをスキップしたいということです。シンプルreturn falseに実行しても、要素がスキップされないように見えますが、代わりfalseに配列に a が挿入されます。

明示的に使用せずに実際にそれを行う方法があるかどうか知りたいです。.each

4

2 に答える 2

11

.map jQueryのコレクションなので、直接実行し.getてから配列になるように使えます。

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

注: 上記のチェックは、falsey ではない値を返します。

jsFiddle のテスト ケースを参照してください。

于 2013-06-16T20:35:53.237 に答える
5

トリックを実行した何も返さない (void) ことを試みる必要がありましたが、なぜこれが以前に頭に浮かばなかったのかわかりません。

同じことをしたい場合は、次の修正があります。

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

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

編集

ここで長さをテストし、同じ主題にとどまるために検証コードを省略しました

于 2013-06-16T20:28:32.810 に答える