我将一个类似于“John.Doe.100.Newbie-David.Miller.250.Veteran-”的字符串传递给 SplitDatabase 函数,该函数适当地拆分字符串并将值分配给 UserDataEntry 对象。然后将 UserDataEntry 对象推入应该存储所有用户数据的全局 UserData 数组。
但出于某种原因, UserData.push(UserDataEntry) 部分似乎正在覆盖 UserData 数组中的先前数据。第一个循环中的警报在循环时显示正确的数据,但底部的第二个循环中的警报只是一遍又一遍地显示最后一条记录。
我不确定这是为什么?
var UserData = [];
function SplitDatabase(result) {
var RawUsers = result.split('-');
var UserDataEntry = {};
for (var i = 0; i < (RawUsers.length - 1); i++) {
var tempUserData = RawUsers[i].split('.');
for (var x = 0; x < (tempUserData.length); x++) {
switch (x) {
case 0:
UserDataEntry.firstname = tempUserData[x];
break;
case 1:
UserDataEntry.lastname = tempUserData[x];
break;
case 2:
UserDataEntry.points = tempUserData[x];
break;
case 3:
UserDataEntry.rank = tempUserData[x];
UserData.push(UserDataEntry);
alert(UserData[i].firstname);
break;
}
}
}
for (var i = 0; i < (UserData.length); i++) {
alert(UserData[i].firstname);
}
}