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.nameseraAppleet 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.