JavaScript - 将多个对象存储在数组中并通过其访问其属性

时间:2016-05-06 16:50:06

标签: javascript arrays object push

所以这里我有一个用户对象数据库,我想将每个对象推入'allUsers'数组。然后,我希望能够遍历此数组并访问属性,例如allUsers[i].genrePref。如何将所有这些变量推送到数组中以存储它们,如[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 = [];

3 个答案:

答案 0 :(得分:10)

要将变量添加到数组中,除了完全按照您在示例中所做的操作之外,别无其他办法,即手动将每个变量添加到数组中。

// 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对象中的条目。

祝你好运。

答案 1 :(得分:0)

GitHub

只需使用.push将所有内容推送到这样:

var allUsers = [];

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

答案 2 :(得分:0)



	 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);
&#13;
<html>
<head>
	<title>Javascript</title>
</head>
<body>
</body>
</html>
&#13;
&#13;
&#13;