-1
votes

Comment conditionner conditionnellement des données basées sur l'objet JavaScript?

Toute aide? Disons que j'ai cet éventail d'objets. XXX PRE>

Je travaille avec un composant de temps de réacteur simple pour afficher "HR" ou "HRS". Comment vérifier si la valeur "data.lastsen" est supérieure à 1? Donc, je peux afficher comme suit ce "1 hr" ou "2 heures" p>

Je sais que je sais que, d'ajouter et d'afficher de manière conditionnelle "HR" ou "HRS" à chaque objet avec laquelle j'ai des problèmes.

 const User = ({ user }) => {
  return (
    <Col>
      <Seen user={user} />
    </Col>
  );
};


const Seen = ({ user }) => {
  return <React.Fragment> {user.map((seen) =>
        seen.lastseen == 1 ? seen.lastseen + "hr" : seen.lastseen + "hrs"
      )}</React.Fragment>;
};


5 commentaires

Quel problème êtes-vous confronté en ce moment?


J'ai reçu cette erreur "TypeError: utilisateur.map n'est pas une fonction"


utilisateur n'est pas un tableau afin que vous obteniez cette erreur


Mais il s'agit d'objets Const Data Array, non? Je me suis gratté ma tête pendant 3 jours maintenant.


Mise à jour à cela, il fonctionnera dans votre cas {objet.keys (utilisateur) .map ((clé) => (touche == 'chant] (utilisateur] == 1? utilisateur [clé] + 'hr': utilisateur [clé] + 'hrs'): null))}


5 Réponses :


4
votes

Étant donné que vous ne pouvez pas utiliser si sinon dans JSX utilise des opérateurs ternaires tels que ceci à la place:

const mapData = data.map(seen => (seen.lastseen == 1 ? 'hr': 'hrs'));


3 commentaires

Merci, je pense que cela va faire. Mais j'ai eu une erreur "data.map n'est pas une fonction" lorsque j'ai ajouté ce code à mon fichier. Je pense que parce que j'ai également ajouté à l'intérieur de la carte. Est-ce?


Si les données sont définies ci-dessus MapData, cela devrait fonctionner. Parce que vous rendant un tableau.


Bonjour, je mettais à jour mon code et j'ai appliqué le code que vous avez suggéré. Quel est le problème avec ma mise en œuvre de code? Toujours j'ai eu une erreur "TypeError: utilisateur.map n'est pas une fonction"



0
votes
for(var i=0; i<data.length; i++) {
    if(data[i].lastseen === 1) {
        // display 1 + 'hr'
    } else if(data[i].lastseen > 1) {
        //diplay data[i].lastseen + 'hrs'
    }
}

0 commentaires

0
votes

Voici ma solution:

p>

import React from "react";

class App extends React.Component {
  render() {
    const data = [
      {
        id: 1,
        name: "lorem A",
        lastseen: 1
      },
      {
        id: 2,
        name: "lorem B",
        lastseen: 16
      },
      {
        id: 3,
        name: "lorem C",
        lastseen: 3
      },
      {
        id: 4,
        name: "lorem D",
        lastseen: 10
      }
    ];
    return (
      <div>
        {data.map(item => {
          return item.lastseen === 1 ? (
            <p key={item.id}>{item.lastseen}hr</p>
          ) : (
            <p key={item.id}>{item.lastseen}hrs</p>
          );
        })}
      </div>
    );
  }
}

export default App;


0 commentaires

0
votes

Maintenant, je l'ai compris grâce à l'aide.

J'ai mis à jour ma composante vue sur xxx

mon erreur, je pensais "l'utilisateur" est toujours un tableau qui est Pas c'est un objet. C'est pourquoi je continue à obtenir une erreur "TypeError: utilisateur.map n'est pas une fonction"


0 commentaires

0
votes

à partir de votre code ci-dessus xxx

sera lancé une erreur

typeError: utilisateur.map n'est pas une fonction

comme utilisateur est un objet que vous pouvez utiliser objet.keys et de la carte sur elle. Donc, changez votre code xxx

et cela fonctionnera bien.


0 commentaires