de la demande d'obtention de la demande, je reçois une matrice d'objet et j'aimerais affecter ces données à deux variables différentes. Une variable obtiendra toutes les données, la deuxième variable obtiendra une version mutée de ces données.
Le code que j'ai essayé: p> Que se passe-t-il est que, pour une raison quelconque, la valeur des feuilles de temps est modifiée et mutationtielle obtient un tableau d'indéfinie P> P>
3 Réponses :
edit fort>: Pour effectuer plusieurs copies du même objet sans les modifier, vous pouvez utiliser Donc, dans votre cas: Il y a plus d'explication en profondeur sur la façon dont le clonage d'objet se comporte dans JavaScript (par exemple: Comment puis-je cloner correctement un objet JavaScript? a >) Mais la chaîne de fonction JSON fait l'affaire ici p> dans votre devrait faire le tour p> p> var obj = json.parse (json.stringify (res)) code >.
this.timesheets = json.parse (json.parse (json.stringify (res)); code> p>
res.Map () code> Vous avez oublié de retourner
j code>: p>
Merci, cela a fixé le problème non défini, mais la variable des feuilles de temps est toujours une gamme d'objets avec des propriétés supprimées. C'est la partie la plus étrange pour moi. La carte est censée donner un nouveau tableau tout en laissant l'ancien intact. Cependant, il change également le tableau de résolution d'origine.
À droite, c'est à cause de la manière dont JavaScript prend une copie de l'objet de réponse, pour résoudre ce problème, vous pouvez faire cela `this.timesheets = JSON.PARSE (JSON.Stringify (RES));`
Cela ne fonctionne pas comme ça, lorsque la fonction de la carte renvoie une nouvelle matrice, il renvoie un nouveau tableau, mais les références d'objet sont identiques, par exemple si y ont cela signifie que l'objet utilisateur Les références sont les mêmes paster dans quel tableau vous l'avez défini,
Ainsi, lorsque vous retournez un nouveau tableau à l'aide de la carte, les références d'objet restent identiques, alors tout ce que vous faites dans les objets est identique pour les deux tableaux, vous pouvez le faire pour empêcher que cela se produise p>
Vous faites 1) Copier la matrice par référence forte>. Donc, les feuilles de temps sont également modifiées p> 2)
p> Essayez ceci out H2>
this.service.getEmployeeTimesheets().subscribe(res => {
this.timesheets = res;
this.mutatedTimesheets = res.map(j => {
// Re-reference the current object
j = {...j};
delete j["keyName1"];
delete j["keyName2"];
return j;
});
console.log(this.mutatedTimesheets);
});
Quelle version de angulaire?
Ma version angulaire est 6.1
Je pense que vous utilisez http. Utilisez httpClient angular.io/guide/http