【发布时间】:2012-06-21 03:23:20
【问题描述】:
所以我有一个对象,我在 nodejs 中使用它。它看起来像这样:
for(var i = 0; i < x.length; i++) {
var sUser = x[i];
mUsers[sUser.userid] = CreateUser(sUser);
++mUsers.length;
}
所以我从外部来源提取信息,然后它分解为一个充满以下实例的数组:
[{ name: 'Michael Lovesllamas Lankford',
created: 1338420951.11,
laptop: 'pc',
laptop_version: null,
userid: '4fc6aed7eb35c14ad6000057',
acl: 0,
fans: 1,
points: 5,
avatarid: 34 }]
等等。
这样信息就会在上述函数中作为 x 传递。
global.mUsers = {length:0}
global.UserBase = {
userid: -1,
name: "noidea",
isSuperUser: false,
isDJ: false,
laptop: "pc" };
process.on("registered", OnRegistered);
global.OnRegistered = function(a) {
//misc code here
RegisterUsers(a.users);
//misc code here
}
global.CreateUser = function(a) {
var b = UserBase;
b.userid = a.userid;
b.name = a.name;
b.laptop = a.laptop;
if (a.acl > 0) b.isSuperUser = true;
return b;
};
global.RegisterUsers = function(x) {
for(var i = 0; i < x.length; i++) {
var sUser = x[i];
mUsers[sUser.userid] = sUser;
++mUsers.length;
}
}
现在,我已将其记录在循环中,并且 mUsers[sUser.userid] 确实 = sUser。 但是当我在循环之后立即 console.log(mUsers) 时,我得到了这个:
{
userid1: { userid: userid3, name: name3, item: item3 },
userid2: { userid: userid3, name: name3, item: item3 },
userid3: { userid: userid3, name: name3, item: item3 }
}
而且我不知道它为什么会被覆盖。有什么想法吗?
【问题讨论】:
-
您真的是指
++i而不是i++,它们在for循环中应用时完全不同。 -
你真正想做什么?
CreateUser是做什么的? -
我的意思是 i++,我的意思是删除 CreateUser,让我编辑一下。
-
@DaltonGore 好的,接下来你能验证
x是你所期望的吗? -
我刚刚编辑了它,这是无法正常工作的完整功能。第一点是 x 发生了什么的实际日志,但还有更多 [它不同] 问题似乎出在 CreateUser 上,就像我刚刚做 mUsers[sUser.userid] = sUser;结果很好。 >:如果我混淆了我很抱歉T_T
标签: javascript node.js object loops