Je regarde depuis un moment et je n'arrive pas à trouver une réponse au problème auquel je suis confronté. Je suis nouveau donc il y a de fortes chances que je fasse ce que j'essaye de faire à tort. Le but de ce que je fais est simplement d'apprendre ce que je peux et ne peux pas faire avec des objets, des tableaux et des boucles, alors que je fais ce projet avec ce que je veux faire, je découvre lentement comment faire ces choses. Donc, ce que j'ai ici, c'est un tas d'objets (avec des clés et des valeurs). Je vais stocker chacun de ces objets individuels (caractères) dans un autre objet appelé caractères.Accès aux clés et à la valeur des objets dans les objets
function Character(sociability, assertiveness, adventurous, emotionalExpressiveness, kindness, altruism, affection, trust, impulseControl, thoughtfullness, emotionalStability, sexuality, evil, intellectualCuriosity, novelty, interests, intelligence) {
"use strict";
this.sociability = sociability;
this.assertiveness = assertiveness;
this.adventurous = adventurous;
this.emotionalExpressiveness = emotionalExpressiveness;
this.kindness = kindness;
this.altruism = altruism;
this.affection = affection;
this.trust = trust;
this.impulseControl = impulseControl;
this.thoughtfullness = thoughtfullness;
this.emotionalStability = emotionalStability;
this.sexuality = sexuality;
this.evil = evil;
this.intellectualCuriosity = intellectualCuriosity;
this.novelty = novelty;
this.interests = interests;
this.intelligence = intelligence;
}
var aloy = new Character(0, 11, 11, 0, 11, 11, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0),
bayonetta = new Character(0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 17, 0, 11, 0, 0),
elizabeth = new Character(0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12),
ellie = new Character(0, 12, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 10),
//store all above objects into new object
var Users = {
aloy: aloy,
bayonetta: bayonetta,
elizabeth: elizabeth,
ellie: ellie,
};
Après cela, je crée un tableau qui comprend les noms de 5 des clés de l'objet de caractères:
var matchArr = ["sociability", "assertiveness", "adventurous", "emotionalExpressiveness", "kindness"]
Voici la partie que je suis coincé à et je vais essayer d'expliquer du mieux que je peux. Je vais d'abord vous montrer le code, puis essayer de donner un sens à ce que je veux faire.
for (i = 0; i <= 4; i++) {
for (var obj in Users) {
if (Users.obj.matchArr[0] > 1) {
console.log(obj)
}
}
}
Ce que je veux faire est de boucle à travers l'objet Users
et si l'un de l'objet dans cet objet (le Characters
) a une clé avec une valeur qui satisfait ma déclaration if
, connectez-vous le nom de cet objet de caractère .
-Si je me connecte for (var obj in Users) { console.log(obj); }
boucle I à chaque nom Character
qui est stocké dans Users
, comme prévu.
-Si je me connecte matchArr[0]
par itslef, j'obtiens "sociability"
comme attendu de ma baie matchArr
.
-Si je me connecte Users.aloy.sociability
je reçois 0
comme prévu que c'est la valeur de aloy.sociability
si je me connecte -mais Characters.aloy.matchArr[0]
je reçois une erreur (Impossible de lire la propriété « 0 » undefined). Je ne vois pas pourquoi c'est différent que de taper explicitement sociability
puisque c'est la valeur exacte de matchArr[0]
.
Comment puis-je faire référence correctement Users.aloy.sociability
par exemple de la façon dont je tente de. Dans ma tête, il est logique que lorsque je référence Users.obj.matchArr[0]
, c'est comme si je tapais explicitement Users.aloy.sociability
, Users.bayonetta.sociability` (et ainsi de suite comme il boucle). Encore une fois, je vais peut-être me tromper complètement et j'apprécierais toute aide, même si cela ne fait que me diriger vers d'autres documents que je peux lire et obtenir une meilleure compréhension qui pourrait me mener dans la bonne direction.
Ma seule supposition est que les valeurs de tableau (par exemple matchArr[0] > "sociability"
) est une chaîne et je ne peux pas utiliser les chaînes de cette façon. Si oui, je ne sais pas quoi faire à ce sujet.
Merci d'avance pour toute aide.
Veuillez raccourcir vos exemples de code. Vous n'avez besoin que de quelques caractères avec quelques attributs pour illustrer votre question. –