我已经简化了代码,使其变得更容易,但是我在网格上制作游戏,跟踪玩家的游戏棋子。
如果它是一个9x9网格,那么该数组将有9个索引,每个索引包含9个索引,所以我可以将网格上的一个点称为数组[x] [y]。每转一圈我想将这个位置存储在网格历史数组中。
我曾经尝试过每次使用array.push,但是在转了一圈后,如果我查看历史记录,所有网格都与当前网格相同。我做了一个简单的jsfiddle演示 - https://jsfiddle.net/3rmwnuv5/
下面的代码:
var stones = [['clear', 'clear', 'clear'], ['clear', 'clear', 'clear'], ['clear', 'clear', 'clear']]
var stoneHistory = [];
stoneHistory.push(stones);
stones[1][1] = 'black';
stoneHistory.push(stones);
stones[0][2] = 'white';
stoneHistory.push(stones);
console.log(stoneHistory);
答案 0 :(得分:0)
所以我抬头看了如何做一个深度数组,并通过json stringify完成,如下所示。
var stones = [['clear', 'clear', 'clear'], ['clear', 'clear', 'clear'], ['clear', 'clear', 'clear']]
var stoneHistory = [];
var copy = JSON.parse(JSON.stringify(stones));
stoneHistory.push(copy);
stones[1][1] = 'black';
var copy = JSON.parse(JSON.stringify(stones));
stoneHistory.push(copy);
stones[0][2] = 'white';
var copy = JSON.parse(JSON.stringify(stones));
stoneHistory.push(copy);
console.log(stoneHistory);
答案 1 :(得分:0)
var stones = [['clear', 'clear', 'clear'], ['clear', 'clear', 'clear'], ['clear', 'clear', 'clear']]
var stoneHistory = [];
var val1 = JSON.parse(JSON.stringify(stones));
stoneHistory.push(val1);
stones[1][1] = 'black';
var val2 = JSON.parse(JSON.stringify(stones));
stoneHistory.push(val2);
stones[0][2] = 'white';
console.log(stoneHistory);