javascript - Typescript Filter-Methode
In meiner Angular-2-Anwendung habe ich zwei Objekt-Arrays deklariert.
users: User[];
selectedUsers: User[];
Jetzt verwende ich die filter()-Methode, um ein Array mit Objekten zurückzugeben, deren checked-Eigenschaft wahr ist.
this.selectedUsers = this.users.filter(user => user.isChecked == true);
Das Problem besteht darin, dass die Referenzen für Elemente beider Arrays gleich sind. Gibt es also eine Möglichkeit, die Objekte herauszufiltern und ein Array neuer Objekte (neue Referenz) zurückzugeben?
Antwort #1
Sie können immer Array.prototype.map verwenden, um ein neues Array zu erstellen, und Object.assign, um ein neues Objekt zu erstellen:
this.users.filter(user => user.isChecked).map(u => Object.assign({},u));
Antwort #2
Sie können die Funktion _.cloneDeep (Bibliothek "lodash") verwenden:
Um Lodash in TypeScript zu implementieren, benötigen Sie:
npm i -S lodash
und die @types-Bibliothek :
npm i -S @types/lodash
und in deinem Code:
import * as _ from 'lodash'
let cloneCheckedObject = _.cloneDeep(this.users.filter(user => user.isChecked);
