我有以下javascript代码:
function Board() {
// 2d array of 'Pieces'
this.Map = [
[new Piece(), new Piece(), new Piece()],
[new Piece(), new Piece(), new Piece()],
[new Piece(), new Piece(), new Piece()]
];
// return full 9x9 2d integer array
this.GetDetailedMap = function() {
//?
}
}
function Piece() {
//2d array of integers
this.Layout = [
[1,0,1],
[0,0,0],
[1,0,1]
]
}
function DifferentPiece() {
//2d array of integers
this.Layout = [
[1,0,1,1],
[0,0,0,0],
[0,0,0,0],
[1,0,1,1],
]
}
GetDetailedMap()
应该做的是返回一个9x9的2d数组,该数组包含右索引处每个部分的布局。
所有'Piece'布局始终是方形的。所有部件都可以升级,例如:4x4,6x6等。不应该有一件3x3和另一件4x4。
我该如何实现这个功能?
编辑: 我自己接近解决它,但我有一些错误,我的代码不像接受的答案那么整洁。
答案 0 :(得分:0)
这应该这样做:
this.GetDetailedMap = function flatMap() {
var piecesize = this.Map[0][0].Layout.length;
var detailedMap = [];
for (var i=0; i<this.Map.length; i++) {
var mapRow = this.Map[i];
for (var j=0; j<piecesize; j++) {
var detailedRow = [];
for (var k=0; k<mapRow.length; k++) {
var pieceRow = mapRow[k].Layout[j];
for (var l=0; l<pieceRow.length; l++) {
detailedRow.push(pieceRow[l]);
}
}
detailedMap.push(detailedRow);
}
}
return detailedMap;
}