2017-12-28 34 views
-2

lodashのfilter方法を見ると、この方法は、それが呼び出されたコレクションを変異させるかどうかをドキュメントで私には不明でした。lodashは、それが呼び出された配列をmutateしませんか?

しかし、私は、以前のプロパティから新しいコレクションを作成しようと_.omitが親を変異させない場合には、中には反応することが表示されます。

_.rejectその親を変異させない、より適切な解決策ですか?ここ

はprofile.id dissapearingの例jsfiddleです。 https://jsfiddle.net/69z2wepo/96535/

+0

省略は、オブジェクトではなく、アレイ上で使用されています。フィルタはコレクションを変更しません。 –

+2

入力を変更する関数は、ドキュメントで明示的に呼び出されます(Ctrl + F "mutate" in https://lodash.com/docs)。 'filter'と' omit'のどちらも、入力を変更することについて言及していません。 –

+0

@EricGuan docsは、オブジェクトに省略記号が使用されていると言っています。https://lodash.com/docs/4.17.4#omit – mibbit

答えて

0

私は完全にあなたの質問に従っていませんが、あなたがfilteromitまたはrejectの一つ以上かどうかが彼らの入力を変異させると懸念している表示されます。彼らの誰もしません。

const original = {a: 1}; 
 

 
console.log('--- filter() ---') 
 
console.log(_.filter(original, 'a')); 
 
console.log(original); 
 

 
console.log('--- omit() ---') 
 
console.log(_.omit(original, 'a')); 
 
console.log(original); 
 

 
console.log('--- reject() ---') 
 
console.log(_.reject(original,() => true)); 
 
console.log(original);
<script src="https://unpkg.com/[email protected]/lodash.js"></script>

恥知らずなプラグイン:表示するには、このスニペットを実行しfilter()omit()をそのLodashの対応よりもはるかに小さいバンドルサイズで、マイライブラリMicro-dashでご利用いただけます。

+0

固定する必要があります壊れていたオブジェクトを変異させるlodashでomit' 'のバージョンはありますか? – Noitidart

+1

['unset()'](https://lodash.com/docs/4.17.4#unset)のように見えるかもしれません。 –

+0

ありがとう、エリック!!! – Noitidart

関連する問題