0
votes

Calculer dans la carte dans ES6

Je dois calculer le total pour un champ spécifique à l'intérieur de la carte xxx pré>

renvoie p> xxx pré>

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,
             }
         ],
         }
        ]


5 commentaires

Corrigez-moi si je me trompe, vous souhaitez afficher une somme de local_knowledge_ratant sur le champ en fonction de agent.reviews non? Qu'en est-il de a.id ? Depuis le résultat 3 ne fait pas partie de agent.reviews ?


Veuillez inclure une exemple de données de agent.reviews 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 que vous attendez d'être rendu

?


@SAAC Key est requis par ReactJS lors de l'utilisation de la carte, c'est juste une clé


4 Réponses :


-1
votes

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>
   )
})}


10 commentaires

.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)} )})} Fonction GETUM (Total, Num) {Total de retour + Num.Local_knowledge_ratant; }


a.local_knowledge_ratant est un champ, pas un tableau , vous ne pouvez pas appeler réduire dessus


A est l'un des éléments de agent.reviews , comment pouvez-vous réduire 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 sur a.reduce . A n'est pas un tableau, A 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 deux fois au lieu d'une fois. Cette réponse est incorrecte de plusieurs manières.



0
votes

Vous pouvez essayer Sumby avec Lodash: https://lodash.com/docs/4.17. 11 # Sumby


0 commentaires

0
votes

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>


2 commentaires

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.



0
votes
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

0 commentaires