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

mel*_*ows 6 javascript arrays push object

所以这里有一个用户对象数据库,我想将每个对象推入'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 = [];
Run Code Online (Sandbox Code Playgroud)

Dan*_*lis 11

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

// Users array
var allUsers = [
    user,
    jon,
    lucy,
    mike,
    luke,
    james,
    dave,
    sarah,
    natalie
];
Run Code Online (Sandbox Code Playgroud)

但是,您应该做一些更健壮的事情,最简单的形式是定义一个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]);
}
Run Code Online (Sandbox Code Playgroud)

最后一个关于风格的说明.您应该避免明确地将users对象文字中每个用户对象的"键"设置为用户的名称.如果您有任何具有相同名称的用户,则此模型将中断.相反,请考虑为每个用户生成某种唯一键,如guid或其他一些唯一值.这样,users如果您users从某个数据库填充此对象并且两个或多个用户碰巧具有相同的名称,那么您将永远不会意外覆盖对象中的条目.

祝好运.