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} /> );
const items = [ { name: 'Fruits', abbr: 'A', }, { name: 'Fruits1', abbr: 'b', }, ]
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 ...
4 Réponses :
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);
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 } /> );
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".
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 /> ); });
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 })
Mais
item.name
seraApple
et nonFruits
.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.