2016-05-06 1 views
2

Итак, у меня есть база данных пользовательских объектов, и я хотел бы нажать каждый в массив «allUsers». Затем я хочу, чтобы можно было пройти через этот массив и получить доступ к свойству, например. allUsers[i].genrePref. Как я нажимаю все эти переменные в массив, чтобы хранить их как [user, jon, lucy, mike, luke...JavaScript - Хранить несколько объектов в массиве и получить доступ к их свойствам через

// 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 = []; 

ответ

6

Чтобы просто добавить переменные в массив, нет другого способа, кроме как сделать то, что вы делали в своем примере, а именно вручную добавлять каждую переменную в свой массив.

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

НО, вероятно, вы должны сделать что-то более надежное, что в своей простейшей форме состоит в определении литерал объекта с именем users, содержащий каждый объект пользователя. Тогда вы не только имеете дополнительное преимущество псевдо-пространство имен вокруг ваших пользователей, вы можете легко перебрать литерал объекта и поместить каждый пользователь в массив, как таковые:

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

последнее замечание по стилю. Вероятно, вы, вероятно, не должны явно указывать «ключ» каждого пользовательского объекта в своем литеральном объекте users на имя пользователя. Если у вас есть пользователи с одинаковым именем, эта модель сломается. Вместо этого рассмотрите возможность создания какого-то уникального ключа, такого как guid, или другого уникального значения для каждого пользователя. Таким образом, вы никогда не будете случайно перезаписывать запись в свой объект users, если, например, вы заполняете этот объект users из какой-либо базы данных, и два или более пользователя имеют одно и то же имя.

Удачи.

+0

Возможно, я должен был сформулировать свой вопрос немного лучше, но то, что вы только что дали мне, именно то, что я хотел сделать! Спасибо! – mellows

+0

без проблем. не забудьте отметить как правильные. Удачи! –

0

Working Example

Просто используйте .push, чтобы подтолкнуть их все в примерно так:

var allUsers = []; 

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

почему 'вызов (...)'? –

+0

спасибо @DannyBullis, что была ошибкой. – JordanHendrix

-1

\t 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'}]; 
 
\t 
 
\t var text = "<table border ='1'><tr><th>Username</th><th>genrePref</th></tr>" 
 
\t for (var i=0;i<arr.length;i++){ 
 
    text+="<tr><td>"+arr[i].username+"</td><td>"+arr[i].genrePref+"</td></tr>" \t \t \t \t 
 
\t } 
 
\t text+="</table>"; 
 
    document.write(text);
<html> 
 
<head> 
 
\t <title>Javascript</title> 
 
</head> 
 
<body> 
 
</body> 
 
</html>

 Смежные вопросы

  • Нет связанных вопросов^_^