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

JavaScript - Store multiple objects in array and access their properties via

本文关键字:访问 属性 对象 存储 数组 JavaScript-      更新时间:2023-09-26

因此,这里有一个用户对象数据库,我想将每个对象推送到"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 = [];

要将变量添加到数组中,实际上没有其他方法,只能完全按照您在示例中所做的操作,即手动将每个变量添加到数组。

// 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对象文字中每个用户对象的"key"显式设置为用户的名称。如果你有任何同名的用户,这个模型就会崩溃。相反,考虑为每个用户生成某种唯一的密钥,如guid或其他一些唯一值。这样,您就不会意外地覆盖users对象中的条目,例如,如果您正在从某个数据库填充此users对象,并且两个或多个用户碰巧具有相同的名称。

祝你好运。

工作示例

只需使用.push将它们全部推入,如下所示:

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

	 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>

     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>