1
votes

Comment faire un tableau .map () dans un tableau comme un paramètre?

Ma consultation retourne un objet json avec un tableau à l'intérieur du tableau ... Mon console.log est comme ceci:

componentDidMount() {
   //... 
  this.myFunction(myJson.item3.map(content => content.id))     
}

myFunction = id => {
   //something....
}

J'ai besoin de l'élément item3 et passer comme un paramètre, donc je l'ai essayé:

item1: false
item2: 999
item3: Array(3)
          0: {id: 1589, data: "..."}
          1: {id: 1587, data: "..."}

Mais, ma variable content est retournée comme "non défini" .

J'ai essayé d'utiliser différentes méthodes pour le faire, mais sans succès.

Qu'est-ce que je fais de mal?

Comment puis-je obtenir map () mon tableau item3 et passer comme un paramètre à myFunction?


7 commentaires

Vous transmettez un tableau d’ID à «maFonction». Est-ce ce que vous avez l'intention?


Pouvez-vous ajouter le code où vous conservez la console pour enregistrer votre contenu en relation avec votre fonction CDM. Peut-être que CDM n'a pas accès au contenu .


Pouvez-vous également donner la sortie attendue. Ce que vous voulez réellement n'est pas clair.


Yuch. Pourquoi les gens utilisent-ils a = b => { dans les cours? Quel est le problème avec a (b) {?


@WillHoskings C'est une fonction, pas une classe, et c'est le nouveau standard. developer.mozilla.org/en-US/docs/ Web / JavaScript / Référence /…


C'est un composant React, et ils utilisent évidemment la syntaxe de la fonction de flèche dans une classe pour une raison quelconque.


Oui, les composants de réaction peuvent avoir des fonctions en leur sein. Et cette syntaxe est toujours très acceptable et utile pour cela.


3 Réponses :


2
votes

Je pense que vous voulez quelque chose de plus comme ceci:

componentDidMount() {
   //... 
  myJson.item3.map(content => this.myFunction(content.id))     
}

myFunction = id => {
   //something....
}

Ce que vous faites dans votre code est de mapper sur le tableau et de ne rien faire. Puis appeler myFunction sur undefined puisque la carte ne renvoie jamais rien. Ce que vous voulez faire à la place, c'est mapper la fonction à chaque élément du tableau pour obtenir l'ID. Donc, vous appelleriez map, puis dans la carte, appelez myFunction pour chaque élément.


0 commentaires

0
votes

Vous n’avez pas montré assez, j’ai ce code qui fonctionne:

let things = {
  thing1: false,
  thing2: '999',
  thing3: [{ id: 1589, data: "..." },
          { id: 1587, data: "..." }]
}

const myFunction = id => {
  console.log(id)
}

myFunction(things.thing3.map(content => content.id)) 


0 commentaires

0
votes

En supposant que votre objet soit structuré comme vous le pensez, cela devrait fonctionner correctement.

var jsonObj = {
  item1: false,
  item2: 999,
  item3: [
    {id: 1589, data: "..."},
    {id: 1587, data: "..."}
  ]
};

const ids = jsonObj.item3.map( o => o.id );

console.log(ids);

Si cela ne vous donne toujours pas votre tableau de identifiants , veuillez poster le retour exact de ce à quoi ressemble votre objet json.


0 commentaires