Przekazuję ciąg znaków, który wygląda mniej więcej tak: "John.Doe.100.Newbie-David.Miller.250.Veteran-" do funkcji SplitDatabase, która odpowiednio rozdziela łańcuch i przypisuje wartości do obiektu UserDataEntry. Obiekt UserDataEntry jest następnie przesyłany do globalnej tablicy UserData, która ma przechowywać wszystkie dane użytkownika.Push zastępuje poprzednie dane w tablicy
Z jakiegoś powodu część UserData.push (UserDataEntry) wydaje się nadpisywać poprzednie dane w tablicy UserData. Alert w pierwszej pętli pokazuje poprawne dane w pętli, ale alarm w drugiej pętli na dole pokazuje tylko ostatni rekord w kółko.
Nie jestem pewien, dlaczego tak jest?
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);
}
}
wyczyść tablicę przed zapisaniem nowych danych! – rach