1
votes

Convertir la chaîne provenant d'une variable en une autre variable

J'ai une chaîne que j'obtiens d'une carte et je veux la convertir en variable, voici un ex complet: 1. J'ai la liste d'éléments suivante:

const listItems = items.map((item, index) =>
    <Item
      key={index}
      newList={Fruits} // I need this one to become variable and not to evaluate into string
      {...props}
    />
  );
const listItems = items.map((item, index) =>
    <Item
      key={index}
      newList={item.name} // I need this one to become variable and not to evaluate into string
      {...props}
    />
  );
  1. Et une deuxième liste d'articles:
const items = [
  {
    name: 'Fruits',
    abbr: 'A',
  },
  {
    name: 'Fruits1',
    abbr: 'b',
  },
]
  1. Je veux convertir la chaîne "item.name" en "Fruits" afin de passer le const Fruits sous forme de liste à la variable "newList" comme ceci:
const Fruits1 = [
  {
    name: 'Orange',
    width: 100,
    height: 100,
    shape: 'orange',
  },
  {
    name: 'Lemon',
    width: 10,
    height: 100,
    shape: 'lemon',
  },
]

Des suggestions sur la façon de procéder?

J'attends ce résultat:

const Fruits = [
  {
    name: 'Apple',
    width: 100,
    height: 100,
    shape: 'apple',
  },
  {
    name: 'Banana',
    width: 10,
    height: 100,
    shape: 'banana',
  },
]

NB: item.name sera "Fruits" pour le premier élément, puis "Fruits1" pour le second et ainsi de suite ...


3 commentaires

Mais item.name sera Apple et non Fruits .


voulez-vous que les éléments soient comme {abbr: "b", Fruits: "Banana"} ou {abbr: "A", Fruits: {name: 'Apple', width: 100 , hauteur: 100, forme: 'pomme',}}


item.name sera "Fruits" pour le premier élément, puis "Fruits1" pour le second et ainsi de suite ..., j'ai édité ma question pour y remédier.


4 Réponses :


0
votes

Essayez ceci:

const Fruits = [
  {
    name: 'Apple',
    width: 100,
    height: 100,
    shape: 'apple',
  },
  {
    name: 'Banana',
    width: 10,
    height: 100,
    shape: 'banana',
  },
]

const items = [
  {
    name: 'Apple',
    abbr: 'A',
  },
  {
    name: 'Banana',
    abbr: 'b'}
    ]
 

const result  =  items.map((ele, i) => ({key:i, newList:Fruits.find(r=>r.name===ele.name) ,...ele}) ); 

console.log(result);


0 commentaires

1
votes

Si je comprends bien, vous souhaitez utiliser le nom des éléments pour obtenir des données de la collection Fruit. c'est un moyen simple de le faire.

const listItems = items.map((item, index) =>
  <Item
  key={ index }
  newList = { Fruits.find(fruit => fruit.name === item.name) } // I need this one to become variable and not to evaluate into string
  { ...props }
  />
);


1 commentaires

En fait, je veux passer le "Fruits" comme variable à "newList", ce qui signifie que je veux que "newList" soit une liste des éléments de "Fruits".



0
votes

ce code est seulement si vous avez deux tableaux: Fruits et Fruits1, c'est ce que j'ai compris de votre question, vous avez besoin d'une liste. j'espère avoir répondu à votre question.

const listItems = items.map((item, index) => {
      const Fruits = Fruits.find(fruit => fruit.name === item.name);

      if (!Fruits) {
        Fruits = Fruits1.find(fruit => fruit.name === item.name);
      }
      return (
        <Item
          key={index}
          newList={Fruits} // I need this one to become variable and not to evaluate into string
        />
      );
    });


0 commentaires

1
votes

Il semble que vous deviez renommer une clé dans l'objet JSON items .

Vous pouvez essayer ceci pour le faire,

[
  {
    abbr: "A" ,
    Fruits: "Apple"
  }
  {
    abbr: "b" ,
    Fruits: "Banana"
  }  
]

Entrée:

[
  {
    name: 'Apple',
    abbr: 'A',
  },
  {
    name: 'Banana',
    abbr: 'b',
  },
]

Sortie:

items.forEach(item=>{
  item.Fruits = item.name
  delete item.name
})


0 commentaires