ネイティブメソッドを使用して特定の配列をフィルタリングしています。.filter()
var a = [1,2,3,4,5];
var b = a.filter(function(v) {
return v > 2;
});
これにより、新しい配列 ( [3,4,5]
) が作成されます。ここで、フィルター処理された値を別の配列に入れたいと考えています。ここで私の最良の選択肢は何ですか? するべきか
- 削除された値を同じフィルター メソッド内の新しい配列にプッシュしますか?
- 反転関数を作成し、フィルタリング後に適用しますか?
最初のオプションを使用すると、次のようになる可能性があります。
var b = a.filter(function(v) {
return v > 2 || !c.push(v);
});
その解決策に関する私の問題は、それが2つの異なるものを混ぜ合わせており、将来コードを読む人にとって非常に混乱する可能性があることです. 別の方法として、次のようなものを呼び出すことができます
c = invert(a,b);
function invert(source, compare) {
return source.filter(filterPositives);
function filterPositives(v) {
return compare.indexOf(v) === -1;
};
}
それは効果的ですか?それとも私はもっとうまくやれますか?
この問題を解決する他の(よりエレガントな)アイデアはありますか?