文字列の配列があり、それらのいくつかをすぐに削除したいと思います。しかし、それは機能しません
var list = ['a', 'b', 'c', 'd']
_.remove(list, 'b');
console.log(list); // 'b' still there
_.remove
関数は2番目の引数として文字列を受け入れ、それがプロパティ名であると見なします。この場合、lodashに等価性チェックを実行させる方法は?
もう1つのオプションは、_。pullを使用することです。これは、_。withoutとは異なり、配列のコピーを作成せず、代わりに変更するだけです。
_.pull(list, 'b'); // ['a', 'c', 'd']
Giuseppe Pesが指摘しているように、_.remove
は関数を期待しています。必要なことを行うためのより直接的な方法は、代わりに_.without
を使用することです。これは、does要素を取得して直接削除します。
_.without(['a','b','c','d'], 'b'); //['a','c','d']
関数_.removeは、2番目の引数として文字列を受け入れませんが、配列内の各値に対して呼び出される述語関数を受け入れます。関数がtrue
を返す場合、値は配列から削除されます。
Lodas doc: https://lodash.com/docs#remove
述語がtrueを返す配列からすべての要素を削除し、削除された要素の配列を返します。述語はthisArgにバインドされ、3つの引数(value、index、array)で呼び出されます。
したがって、配列からb
を削除する場合は、次のようにする必要があります。
var list = ['a', 'b', 'c', 'd']
_.remove(list, function(v) { return v === 'b'; });
["a", "c", "d"]