remove
アンダースコアに超単純な関数がないのはなぜですか?
var arr = [1,2,3,4,5];
_.remove(arr, 5);
確かにreject
or without
... を使用できますが、どちらも破壊的ではありません。何か不足していますか?
昔ながらのやり方でやろうと思います...
arr.splice(arr.indexOf(5), 1);
うーん
remove
アンダースコアに超単純な関数がないのはなぜですか?
var arr = [1,2,3,4,5];
_.remove(arr, 5);
確かにreject
or without
... を使用できますが、どちらも破壊的ではありません。何か不足していますか?
昔ながらのやり方でやろうと思います...
arr.splice(arr.indexOf(5), 1);
うーん
これは、Underscore が JavaScript に関数型の概念を提供するためであり、関数型プログラミングの重要な概念の 1 つは参照透過性です。
基本的に、関数には副作用がなく、特定の入力に対して常に同じ出力を返します。つまり、すべての関数はpureです。
配列から要素を削除すると、特定の入力に対して確かに予測可能な結果になりますが、結果は戻り値ではなく副作用になります。したがって、破壊的な機能は機能パラダイムに適合しません。
Underscore で配列から値を削除する正しい方法については、Stack Overflow hereですでに詳細に説明されています。補足として、without
、reject
またはを使用filter
する場合、配列から項目の 1 つのインスタンスのみを削除する場合は、それを一意に識別する必要があります。したがって、次のようにします。
arr = _.without(arr, 5);
fromのすべてのインスタンスを削除します。5
arr