【问题标题】:JavaScript - Store multiple objects in array and access their properties viaJavaScript - 将多个对象存储在数组中并通过以下方式访问它们的属性
【发布时间】:2016-05-06 16:50:05
【问题描述】:

所以这里我有一个用户对象数据库,我想将每个对象推入“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 = [];

【问题讨论】:

    标签: javascript arrays object push


    【解决方案1】:

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

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

    祝你好运。

    【讨论】:

    • 我可能应该更好地表达我的问题,但你刚刚给我的正是我想做的!谢谢!
    • 没问题。不要忘记标记为正确。祝你好运!
    【解决方案2】:

    Working Example

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

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

    【讨论】:

      【解决方案3】:

      	 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>

      【讨论】:

        猜你喜欢
        • 2022-01-21
        • 1970-01-01
        • 2020-03-30
        • 2016-08-10
        • 1970-01-01
        • 2013-06-06
        • 1970-01-01
        • 2016-07-13
        • 2013-10-06
        相关资源
        最近更新 更多