その履歴部分は、オブジェクトの配列である可能性があります。そう...
var stateDatHistory = [
{ ME: ['Maine', 1328361] }
];
または、履歴のすべての「ステップ」をキーで参照する必要がある場合は、オブジェクトを含む配列値を持つオブジェクトにすることができます...
var stateDatHistory = {
1: [
{ ME: ['Maine', 12334] }
]
}
後者の場合、「開始」コードは次のようになります...
turn = 1
function start() {
if (typeof stateDatHistory[turn] === 'undefined') {
stateDatHistory[turn] = [];
}
stateDatHistory[turn].push(stateDat);
stateDat['ME'][1]= stateDat['ME'][1] - 500; //changing population
turn++;
}
そうは言っても、オブジェクトを使用してこの状態データのすべてを格納することは良い決断であると言いたいと思います。たとえば...
// Define our manager
var stateDatManager = function() { };
(function(instance) {
instance.init = function() {
// Setup internal state
this.history = {};
this.turn = 0;
this.initialized = true;
};
instance.start = function(turn, data) {
if (!this.initialized) { this.init(); }
this.turn = turn;
this.addToHistory(data);
};
instance.addToHistory(data) {
if (typeof this.history[this.turn] === 'undefined') {
this.history[this.turn] = [];
}
this.history[this.turn].push(data);
};
instance.advanceTurn() {
this.turn += 1;
};
}(stateDatManager.prototype));
// Use it
var manager = new stateDatManager();
manager.start(1, [
{ ME: ['Maine', 1328361] }
]);
// Move to the next turn...
manager.advanceTurn();
// etc.