私の角2のアプリケーションでは、2つのオブジェクト配列を宣言しました。 Typescriptフィルタメソッド
users: User[];
selectedUsers: User[];
は今、私はcheckedプロパティ真であるオブジェクトの配列を返すように
filter()
メソッドを使用しています。
this.selectedUsers = this.users.filter(user => user.isChecked == true);
問題は、両方の配列の要素の参照が同じであることです。 オブジェクトをフィルタリングして新しいオブジェクトの配列(新しい参照)を返す方法はありますか?
がためlodashを実装する:あなたが機能( "lodash" ライブラリ)を_.cloneDeep使用することができます
this.users.filter(user => user.isChecked).map(u => Object.assign({},u));
ですから、そのすべてのユーザーのクローンを持つ新しい配列をしたいですチェックされていますか? –
これは動作しません。なぜなら、filterはboolを返す関数を期待しており、結果を気にしません。これはうまくいくはずです: 'this.selectedUsers = this.users.filter(user => user.isChecked == true).map(ユーザ=> deepCloneUser(ユーザ));'。深いクローンを書くのが手間がかかりすぎるなら、lodash&coにはユーティリティメソッドがあります。 – Matthias247
@Pabloはい。基本的に 'isChecked'と同じプロパティを持つ新しいオブジェクトを作成します。 – kiranghule27