「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);
    }
}