0
votes

En utilisant une boucle pour combiner plusieurs tableaux dans un objet

J'ai fait un prototype d'objet pour lequel je souhaite combiner un ensemble de tableaux à créer sous ledit objet.

J'ai essayé de faire le prototype d'objet avec une réducteur de fonction avec les propriétés nécessaires en tant que paramètres. Ensuite, j'ai créé des tableaux avec les données de toutes les propriétés. Mon problème est que lorsque je crée une boucle, ma première idée était de créer une variable et de le nommer après l'élément correspondant à chaque instance d'objet (dans ce cas, le nom du joueur de football), mais la nommage variable dynamique n'est pas possible, donc je ne peut pas sembler créer plusieurs variables / cas d'objet dans une boucle. xxx

de sorte que cela ne fonctionne pas, donc j'ai aussi essayé cela. xxx

mais cela ne s'applique que des données au dernier objet.

Je m'attendais à ce que ma sortie soit remplie dans tous les objets avec les bonnes données, mais je me demande si j'essaie de créer une solution non spécifique. Je n'ai pas joué avec des objets auparavant, alors j'essaie simplement de me contourner et de voir comment il est appliqué en dehors des tutoriels, lorsque je dispose d'une upease pour cela.


3 commentaires

Supprimer le var , remplacer l'objet avec lecteur , alors cela fonctionnerait


On dirait que vous avez confondu les joueurs et le joueur?


"Mais cela n'applique que des données sur le dernier objet." Vous avez mélangé lecteur et lecteurs


4 Réponses :


1
votes
var players = []; // the list of the players
for (var i = 0; i < playerNames.length; i++) {
  var player = {} // the object player
  player.name = playerNames[i];
  player.position = playerPosition[i];
  player.number = playerNumber[i];
  player.yearOfBirth = playerYearOfBirth[i]
  players.push(player); // add the object player into the list of players
}

0 commentaires

1
votes

Essayez ceci. Le tableau et l'objet ont été utilisés à la place les uns des autres, donnant ainsi une erreur

p>

var players = [];
playerNames=[1,2]
playerPosition=[1,2]
playerNumber=[1,2]
playerYearOfBirth=[1,2]

for (var i = 0; i < playerNames.length; i++) {
  var player = {}
  player.name = playerNames[i];
  player.position = playerPosition[i];
  player.number = playerNumber[i];
  player.yearOfBirth = playerYearOfBirth[i]
  players.push(player);
}
console.log(players)


0 commentaires

1
votes

Votre constructeur ne représente que les informations sur un joueur, alors renommez que sur lecteur code>. Vous pouvez ensuite configurer un nouveau code> ensemble de lecteurs code> sur lequel vous pouvez pousser code> nouveaux joueurs comme ils sont créés.

p>

function Player(name, position, number, yearOfBirth) {
  this.name = name;
  this.position = position;
  this.number = number;
  this.yearOfBirth = yearOfBirth;
}

const players = [];

const playerNames = ['Bob', 'Sue'];
const playerPosition = [1, 12];
const playerNumber = ['Forward', 'Goal'];
const playerYearOfBirth = [1972, 1956];

for (var i = 0; i < playerNames.length; i++) {
  const player = new Player(playerNames[i], playerPosition[i], playerNumber[i], playerYearOfBirth[i]);
  players.push(player);
}

console.log(players);


0 commentaires

1
votes

Vous pouvez collecter tous les joueurs dans un objet et accéder au joueur par le nom.

p>

.as-console-wrapper { max-height: 100% !important; top: 0; }


1 commentaires

Je vais essayer cela aussi. Merci!