it-swarm.com.de

JavaScript - Speichern Sie mehrere Objekte in einem Array und greifen Sie über ihre Eigenschaften zu

Ich habe hier also eine Datenbank mit Benutzerobjekten und möchte jeden in das 'allUsers'-Array schieben. Ich möchte dann in der Lage sein, dieses Array zu durchlaufen und auf eine Eigenschaft zuzugreifen, z. allUsers[i].genrePref. Wie drücke ich alle diese Variablen in das Array, um sie wie [user, jon, lucy, mike, luke... zu speichern 

    // 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

Um nur die variables zum Array hinzuzufügen, gibt es wirklich keine andere Möglichkeit, als genau das zu tun, was Sie in Ihrem Beispiel getan haben, nämlich jede Variable manuell zu Ihrem Array hinzuzufügen.

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

ABER, Sie sollten wahrscheinlich etwas robusteres tun, was in seiner einfachsten Form die Definition eines Objektliteral namens users ist, das jedes Benutzerobjekt enthält. Dann haben Sie nicht nur den zusätzlichen Vorteil eines Pseudo-Namensraums um Ihre Benutzer, Sie können auch leicht das Objektliteral durchlaufen und jeden Benutzer in ein Array einfügen:

// 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]);
}

Eine letzte Anmerkung zum Stil. Sie sollten es wahrscheinlich vermeiden, den 'Schlüssel' jedes Benutzerobjekts in Ihrem users-Objektliteral explizit als name des Benutzers festzulegen. Wenn Sie Benutzer mit demselben Namen haben, wird dieses Modell beschädigt. Erwägen Sie stattdessen, einen eindeutigen Schlüssel zu generieren, beispielsweise eine Guid oder einen anderen eindeutigen Wert für jeden Benutzer. Auf diese Weise überschreiben Sie niemals versehentlich einen Eintrag in Ihrem users-Objekt, wenn Sie beispielsweise dieses users-Objekt aus einer Datenbank auffüllen und zwei oder mehr Benutzer denselben Namen haben.

Viel Glück.

10
Danny Bullis

Arbeitsbeispiel

Verwenden Sie einfach .Push, um alle wie folgt zu verschieben:

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