ウェブ上でゲーム内の在庫を複製し、ゲームの在庫は、次のようになります。私は、ウェブ上でCABAL呼ばMMORPGオンラインゲームから在庫を複製しようとしている
は、在庫は4を持っています各タブには8x8のタブがあるため、64個のセルと合計256個のタブがありますが、各タブのインデックスは0から63までで、合計は0から255までです。
アイテムは1:1(rowspan:colspan)の2:2を占め、一部は武器服などの2:6でもありえますが、とにかくポイントは私が試したものですhereは私ができる限り最高の状態で複製しますが、私は1つのタブしか作成できませんでした。
function createCells(rows, cols) {
var cells = {},
x = 0,
startRow = 0,
endRow = 0;
for (var i = 0; i < rows; i++) {
cells[i] = {};
for (var j = 0; j < cols; j++) {
cells[i][j] = { id: "e" + x };
if (angular.isDefined(items[x])) {
cells[i][j] = items[x];
if (items[x].colspan > 1 && items[x].rowspan > 1) {
startRow = x % rows;
endRow = parseInt(x/cols, 10) + items[x].rowspan;
console.log(j);
console.log("Start column " + startRow + " end rowspan " + endRow + " x = " + x);
}
// console.log();
// if (j >= 5 && j <= 8) {
// x += j;
// }
}
if (!angular.equals(cells[i][j], {})) {
console.log(cells[i][j]);
}
x++;
}
}
return cells;
}
だから問題は項目が1より大きくROWSPANとCOLSPAN占めている場合、それは後に他の細胞をプッシュし、私は(E7、E14、E15、E39、E46、E47、E54、E55、それらを取り除く必要があると何があります、e62、e63)。私はそのループが、自動的に項目列スパンと列スパンに基づいて計算する必要があります。 varアイテムにあるアイテムは、apiレスポンスのサンプルです.3,6,12,240,105はタブ1のアイテムです。
誰でも私をさらに助けることができますか?私はこの間何日も立ち往生していません。
すごい迫力、それはまだ私は、私はしかし、それを自分で行うことができますね、マルチタブ部分を実行する必要けれども、これは、必要に応じて働き、とても素敵ですビットが多すぎるループのパフォーマンスを心配して、これは最高のバージョンであり、このコードの方が速いか、改善された方が良いでしょうか? – allocen
私は同じアプローチに基づいて "より効率的"な例を書いていきます。私は1000のアイテムをループすることはおそらく問題にならないので、スピードに焦点を当てるだけでなく、アドバイスをお願いします。より効率的な例がどのようなものになるかを示すために数分を与えてください。可読性が損なわれるかどうかを判断できます。 – user3297291
ありがとう、お待たせします。 – allocen