web-dev-qa-db-fra.com

JavaScript - Stockez plusieurs objets dans un tableau et accédez à leurs propriétés via

Donc ici, j'ai une base de données d'objets utilisateur et j'aimerais pousser chacun d'eux dans le tableau 'allUsers'. Je souhaite ensuite pouvoir parcourir ce tableau en boucle et accéder à une propriété, par exemple. allUsers[i].genrePref. Comment puis-je pousser toutes ces variables dans le tableau pour les stocker comme [user, jon, lucy, mike, luke... 

    // Users
    var user = {username: user9110252username, genrePref: user9110252genre};
    var jon = {username: 'Jon', genrePref: 'rock'};
    var lucy = {username: 'Lucy', genrePref: 'pop'};
    var mike = {username: 'Mike', genrePref: 'rock'};
    var luke = {username: 'Luke', genrePref: 'house'};
    var james = {username: 'James', genrePref: 'house'};
    var dave = {username: 'Dave', genrePref: 'bass'};
    var sarah = {username: 'Sarah', genrePref: 'country'};
    var natalie = {username: 'Natalie', genrePref: 'bass'};


    // Users array
    var allUsers = [];
4
mellows

Pour ajouter simplement variables au tableau, il n'y a pas d'autre moyen que de faire exactement ce que vous avez fait dans votre exemple, à savoir ajouter manuellement chaque variable à votre tableau.

// Users array
var allUsers = [
    user,
    jon,
    lucy,
    mike,
    luke,
    james,
    dave,
    sarah,
    natalie
];

MAIS, vous devriez probablement faire quelque chose d'un peu plus robuste, qui dans sa forme la plus simple consiste à définir un littéral d'objet appelé users qui contient chaque objet utilisateur. Ensuite, vous aurez non seulement l'avantage d'un pseudo-nommage autour de vos utilisateurs, vous pourrez facilement parcourir le littéral d'objet et placer chaque utilisateur dans un tableau, en tant que tel:

// Users
var users = {
    user : {username: user9110252username, genrePref: user9110252genre},
    jon : {username: 'Jon', genrePref: 'rock'},
    lucy : {username: 'Lucy', genrePref: 'pop'},
    mike : {username: 'Mike', genrePref: 'rock'},
    luke : {username: 'Luke', genrePref: 'house'},
    james : {username: 'James', genrePref: 'house'},
    dave : {username: 'Dave', genrePref: 'bass'},
    sarah : {username: 'Sarah', genrePref: 'country'},
    natalie : {username: 'Natalie', genrePref: 'bass'}
}

// Users array
var allUsers = [];

// Populate users array
for(var key in users) {
    allUsers.Push(users[key]);
}

Une dernière note sur le style. Vous devriez probablement éviter de définir explicitement la 'clé' de chaque objet utilisateur dans votre littéral d'objet users comme étant le nom de l'utilisateur. Si vous avez des utilisateurs avec le même nom, ce modèle va casser. Au lieu de cela, envisagez de générer une sorte de clé unique, comme un guid, ou une autre valeur unique pour chaque utilisateur. Ainsi, vous n'écraserez jamais accidentellement une entrée dans votre objet users si, par exemple, vous remplissez cet objet users à partir d'une base de données et que deux ou plusieurs utilisateurs portent le même nom.

Bonne chance.

10
Danny Bullis

Exemple de travail

Il suffit d’utiliser .Push pour tous les insérer comme suit:

var allUsers = [];

allUsers.Push(allUsers, user, jon, lucy, mike, luke, james, dave, sarah, natalie);
0
JordanHendrix

	 var arr = [{username: 'Jon', genrePref: 'rock'},{username: 'Lucy', genrePref: 'pop'},{username: 'Mike', genrePref: 'rock'},{username: 'Luke', genrePref: 'house'},{username: 'James', genrePref: 'house'},{username: 'Dave', genrePref: 'bass'},{username: 'Sarah', genrePref: 'country'},{username: 'Natalie', genrePref: 'bass'}];
	
	var text = "<table border ='1'><tr><th>Username</th><th>genrePref</th></tr>"
	for (var i=0;i<arr.length;i++){
     text+="<tr><td>"+arr[i].username+"</td><td>"+arr[i].genrePref+"</td></tr>"				
	}
	text+="</table>";
    document.write(text);
<html>
<head>
	<title>Javascript</title>
</head>
<body>
</body>
</html>

0
hmharsh3