「John.Doe.100.Newbie-David.Miller.250.Veteran-」のような文字列を SplitDatabase 関数に渡します。この関数は、文字列を適切に分割し、値を UserDataEntry オブジェクトに割り当てます。次に、UserDataEntry オブジェクトは、すべてのユーザー データを格納することになっているグローバル UserData 配列にプッシュされます。
ただし、何らかの理由で、 UserData.push(UserDataEntry) 部分が UserData 配列内の以前のデータを上書きしているようです。1 番目のループのアラートはループ時に正しいデータを表示しますが、一番下の 2 番目のループのアラートは最後のレコードを何度も表示します。
よくわかりませんが、これはなぜですか?
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);
}
}