Je dois calculer le total pour un champ spécifique à l'intérieur de la carte renvoie p> mais j'ai besoin de réaliser est d'obtenir Total P> "users": [
{
"name": "someee",
"reviews": [
{
"id": 1,
"local_knowledge_rating": 1,
},
{
"id": 2,
"local_knowledge_rating": 2,
}
],
}
]
4 Réponses :
Comme suggéré, essayez ceci:
function getSum(total, num) { return total + num.local_knowledge_rating; } {agent.reviews.map((a, i) => { return ( <p style={{fontSize: 15}} key={a.id}>Knowledge Rating: {a.reduce(getSum)}</p> ) })}
.MAP retournera un nouveau tableau basé sur l'appelant. Combien de composants seront rendus de votre code?
Il imprimera: Note de la connaissance: 3 Basée sur la saisie que vous avez mentionnée ci-dessus. Si vous avez plus d'utilisateurs, mettez une carte supplémentaire en dehors des commentaires et vous pouvez générer autant de critiques d'utilisateurs.
A.Local_knowledge_ratant.Reduce n'est pas une erreur de fonction
{Agent.Reviews.Map ((A, I) => {Retour (
Note de la connaissance: {A.Reduce (getum)} P >)})} Fonction GETUM (Total, Num) {Total de retour + Num.Local_knowledge_ratant; }
a.local_knowledge_ratant code> est un champ, pas un tableau
code>, vous ne pouvez pas appeler
réduire code> dessus
A code> est l'un des éléments de
agent.reviews code>, comment pouvez-vous
réduire code> dessus?
Les commentaires sont un tableau et vous utilisez réduire la matrice. J'espère que c'est clair maintenant
Le point est que vous appelez réduire code> sur
a.reduce code>.
A code> n'est pas un tableau,
A code> est un seul élément. (Je ne suis pas le descendant, si cela importe)
En fait, vous utilisez moins sur un élément de tableau et non sur celui-ci, c'est illégal.
Même si cela a fonctionné (ce n'est pas), il imprimerait Note de la connaissance: 3 code> deux fois au lieu d'une fois. Cette réponse est incorrecte de plusieurs manières.
Vous pouvez faire quelque chose comme ci-dessous
Declare ci-dessous render extérieur et passer tableau de commentaires pour comme param p>
Le ci-dessous approche résumera la note pour chaque utilisateur p>
sumRating = reviews => { let total = 0; agent.reviews.forEach(a => { total+= a.local_knowledge_rating; }); return total; } <p style={{fontSize: 15}}>Knowledge Rating: {this.sumRating()}</p>
Les commentaires ne font que partie des utilisateurs. Et il existe de nombreux utilisateurs, c'est pourquoi j'utilise la carte pour itérer chaque utilisateur et compter la clé spécifique de l'examen.
@ira s'il vous plaît vérifier ma réponse mise à jour. Vous devez faire une carte pour chaque utilisateur pour chaque utilisateur que la somme sera calculée.
renderKnowledgeRating() { const sum = agent.reviews.reduce(function(a, b) { return a. local_knowledge_rating + b. local_knowledge_rating; }, 0) return ( <p style={{fontSize: 15}}>Knowledge Rating: {sum}</p> ) } {this.renderKnowledgeRating()} To enhance readability, extract the portion out to another method renderKnowledgeRating. and instead of using map which not really helping in your situation, handle the calculation differently, and return a single component
Corrigez-moi si je me trompe, vous souhaitez afficher une somme de
local_knowledge_ratant sur le champ code> en fonction de
agent.reviews code> non? Qu'en est-il de
a.id code>? Depuis le résultat
3 code> ne fait pas partie de
agent.reviews code>?
Veuillez inclure une exemple de données de
agent.reviews code> dans votre question
Ne réduit pas un bon outil pour cela? Vous continuez à agréger les chiffres dans chaque appel et à renvoyer la balise P sur la dernière boucle en fonction de l'index?
@ira: Qu'en est-il de
id code> que vous attendez d'être rendu
code>?
@SAAC Key est requis par ReactJS lors de l'utilisation de la carte, c'est juste une clé