0

現在、$.grepを使用して、渡す配列から要素をフィルタリングして削除しています。$.grep はフィルタリングのみに使用されることを意図していたと思いますが、配列全体を反復処理しているため、その中の配列も変更する必要があると考えました。

他に提案できるアプローチはありますか?$.mapについて考えましたが、私の知る限り、要素を削除するのではなく、翻訳するために使用する必要があります。

$.eachの私の唯一の選択肢ですか?

私のコードの関連部分:

$.each(filter, function (k, v) {

    if (v.codeKeys) {

        $.each(v.codeKeys, function (i, codeKey) {

            rows = $.grep(rows, function (v2, i2) {

                if ($.isArray(v2[v.dbColumn]) && 
                    $.inArray(codeKey, v2[v.dbColumn]) === -1) {

                    var index = $.inArray(codeKey ,v2[v.dbColumn]);

                    if (v2[v.dbColumn][index])
                        v2[v.dbColumn].remove(index);

                    return true;

                }
                else {
                    return v2[v.dbColumn] !== codeKey;
                }

            });

        });
    }

});
4

1 に答える 1

1

$.map を使用して、配列から項目を削除できます。null を返すようにするだけです。

var items = [1, 2, 3, 4]
$.map(items, function(i) { if (i == 2) return null; return i; })

result: [1, 3, 4]

ドキュメントから:

The function can return:
    * the translated value, which will be mapped to the resulting array
    * null or undefined, to remove the item
于 2013-05-18T17:37:49.430 に答える