Je développe un projet angulaire. J'ai un fichier de table, je veux comparer chaque élément avec une valeur de données si elle est correcte, je ferai une déclaration d'autre, je ferai un autre comprérement, mais mon problème est que même les données sont correctes, il récupère toujours tout le tableau et doit accéder à la sinon pour un très peu de temps. Comment éviter cela, s'il vous plaît.
Voici mon code: P>
if (this.data) {
this.imgNotFoundText = '';
this.data.package.files.forEach(element => {
i++;
this.picture = '';
if (element.name == this.data.properties.Name) {
this.picture = 'picOne.png'
}
if (i == this.data.package.files.length && this.picture == '') {
this.picture = './../assets/img/notFound.jpg'
}
});
}
3 Réponses :
Je vois quelques problèmes possibles:
Il semble suspect de toujours faire Vous avez parlé d'un Donc, si ces deux supposées sont correctes: P> this.picture = ''; code> inconditionnellement dans la boucle. Si vous allez faire cela, vous ne pouvez aussi bien que regarder la dernière entrée de la matrice. Vous voulez probablement déplacer cela pour avant em> le foreach code> appel. P> li>
sinon code>, mais il n'y a pas de sinon code> dans votre code. Vous avez deux si code> s dans une ligne, mais le résultat du premier si code> n'a aucun effet du tout sur le second. Vous avez peut-être recherché sinon si code>. Ensuite, le second si code> n'est pas effectué si la condition dans le premier si code> était vrai. P> li>
ol> if (this.data) {
this.imgNotFoundText = '';
const {files} = this.data.package;
this.picture = files.length ? './../assets/img/notFound.jpg' : '';
for (const {name} of files) {
if (name == this.data.properties.Name) {
this.picture = 'picOne.png'
break;
}
}
}
Vous ne savez pas quel est votre objectif, mais vous êtes simplement itération de la liste et définir la valeur de l'image à chaque fois, cela signifie que vous aurez la valeur de l'image du dernier élément. P>
Si votre objectif est d'afficher une image "non trouvée" pour les éléments qui n'ont pas de fichiers, vous devez disposer d'un tableau de photos qui reflète la matrice de fichiers (ou ajoutez une image de propriété à chaque fichier). < / p>
Mon problème que même j'ai un fichier, la photo de NotFound est affichée pendant une courte période, la bonne image affichée
Cela suggère que vous devriez utiliser une variable temporaire pour stocker le résultat et l'attribuer à ceci.picture code> seulement après la fin du cycle. De plus, une déclaration code> code> au premier résultat réussi doit être utilisée comme dans la réponse précédente.
On dirait que vous pouvez utiliser Array. prototype.some il retournera bien que cela puisse p> p> picone.png code> si l'un des éléments de données.backage.files a un nom identique à celui de this.data.properties.name ou it'll renverser nofind.jpg code> p>
"Il va toujours chercher à toute la table et doit accéder à l'autre pour un temps très court" i> il n'y a pas de
sinon code> dans votre code ...?Lorsque vous demandez de l'aide, il est préférable d'indenter votre code de manière cohérente, assez standard, car cela aide les personnes à lire et à comprendre votre code. (C'est utile quand vous êtes pas i> demander de l'aide aussi.)
l'autre est la seconde si
Séparément: il semble suspect de toujours faire
this.picture = ''; code> inconditionnellement dans la boucle. Si vous allez faire cela, vous ne pouvez aussi bien que regarder la dernière entrée de la matrice. Vous voulez probablement déplacer cela à avant i> leforeach code> appel.Non, il y a une grande différence entre deux
si code> s dans une ligne etsi code> /sinon si code>.même je l'ai fait d'autre si j'avais le même résultat: /
@Mat pouvez-vous poster l'exemple Stackblitz?
Veuillez mettre à jour votre question avec un exemple de reproductible minimal démontrer le problème, idéalement un Runnable B> un Utilisation des extraits de pile (le bouton [<>] code> Bouton de la barre d'outils; Voici comment faire un ) .