JavaScript-将多个对象存储在数组中,并通过访问它们的属性
JavaScript - Store multiple objects in array and access their properties via
因此,这里有一个用户对象数据库,我想将每个对象推送到"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>
相关文章:
- HTML5拖放访问属性
- 如何从保存在数组某个位置的JSON行访问属性
- webGL,javascript:尝试访问属性1中超出范围的顶点
- 访问属性的权限被拒绝'filepicker_comm_iframe'
- CanvasJS-访问变量-访问属性toString的权限被拒绝
- 错误:访问属性“”的权限被拒绝;文件”;
- 从javascript访问属性多端数组PHP
- 模块中的访问属性(CommonJS 样式)
- 从控制台 js 访问属性
- 相同的域,但仍收到“访问属性'文档'的权限被拒绝”
- 如何在 Javascript 中从函数本身或其副本访问属性
- 属性 Javascript 的访问属性
- 从 CoffeeScript 中类的属性中的方法访问属性的属性
- 通过 attrs.val 或 attrs.$set(attname, val)访问属性
- 使用 WinJS.Class 和访问属性
- Twitch TV API 访问属性名称值并更新它
- 如何访问属性名称中具有特殊字符的javascript对象的属性
- Cordova-不推荐尝试访问属性'userAgent'在非导航器对象上
- 具有私有方法的JS原型类不访问属性
- iFrame中的SelectionContext-访问属性“getSelection”的权限被拒绝