J'ai un tableau qui contient un mélange d'objets et de tableaux contenant des objets avec les mêmes propriétés essayant de prendre chaque objet individuel, recherchez la valeur de "sortie" et poussez que beaucoup plus d'objets dans un nouveau tableau: p> et d'erreur "ne peut pas lire la propriété" sortie "de non définie" pour ce reste de celui-ci s'exécute bien. P> Merci! P> ** Éditer PlantoBJ était une faute de frappe, fixe * * p> p> PlantoBJ [i] Code> Référence ... sans suggérer d'autres méthodes et solutions et tels s'il vous plaît et merci (je sais qu'ils sont là-bas, cet exercice d'école!), Est-ce que je manque quelque chose dans la syntaxe ou la logique pour accéder à la valeur de la propriété "sortie" de ces objets imbriqués forts>? La façon dont je lis cela, en commençant à la déclaration IF, est "Si Planitem est une matrice, définissez une variable I à 0 et que je suis inférieur à la valeur de la propriété" Sortie "de l'entrée trouvée à Index Position I de Plantatem ... etc ". P>
4 Réponses :
Dans le premier pour vous avez besoin d'un pour boucle à travers votre matrice, une autre pour boucle à travers la sortie. Dans votre seconde pour vous, Push Plantabj Wich n'existe pas.
p>
plantsArray = [
{type: "wheat", height: 20, output: 25},
{type: "soybeans", height: 30, output: 29},
[{type: "corn", height: 34, output: 9}, {type: "wheat", height: 20, output: 25}],
{type: "wheat", height: 20, output: 25}
]
const harvestOutput = [];
for (const plantItem of plantsArray) {
if (Array.isArray(plantItem) ) {
for (let i = 0; i < plantItem.length; i++)
for (let j = 0; j <= plantItem[i].output; j++) {
harvestOutput.push({...plantItem[i]}); // the {...} is to destructuring the object and make a copy
}
}
else
for (let j = 0; j <= plantItem.output; j++) {
harvestOutput.push({...plantItem});
}
}
console.log(harvestOutput);Il veut y introduire 25 fois si la sortie est 25.
Vous pouvez la matrice plate, puis mapper
p>
let plantsArray = [
{type: "wheat", height: 20, output: 25},
{type: "soybeans", height: 30, output: 29},
[{type: "corn", height: 34, output: 9}, {type: "wheat", height: 20, output: 25}],
{type: "wheat", height: 20, output: 25}];
let result = plantsArray.flat(1).map(x => x.output);
console.log(result);Il a dit qu'il ne veut pas un moyen de le faire, mais pourquoi sa façon ne fonctionne pas.
plat () est une bonne ressource pour accéder à une matrice imbriquée et je pense être utile d'être conscient de cela
Cet extrait de résoudre votre problème;)
p>
const plantsArray = [
{ type: 'wheat', height: 20, output: 25 },
{ type: 'soybeans', height: 30, output: 29 },
[{ type: 'corn', height: 34, output: 9 }, { type: 'wheat', height: 20, output: 25 }],
{ type: 'wheat', height: 20, output: 25 }
];
let harvestOutput = [];
plantsArray.flat(1).forEach(plantItem => {
const harvestedItems = new Array(plantItem.output).fill(plantItem);
harvestOutput = harvestOutput.concat(harvestedItems);
});
console.log(harvestOutput);Vous avez manqué une boucle de matrice imbriquée. Et au lieu de plantitem, vous avez utilisé comme PlantoMJ. J'ai ajouté comme commentaire dans l'endroit respectif.
p>
for (let k = 0; k < plantItem[i].output; k++) {
harvestOutput.push(plantItem[i])
}
Vous n'avez nulle part plantobj nulle part, laissez-moi savoir ce que vous essayez d'atteindre, je peux vous aider avec le code