Iの要素に依存しているパズルゲームがグリッド内に配置されている製造および特定のX、Y位置での値を評価していますのインデックスを必要とします。私のデータは2次元配列に格納されているので、通常のマップはうまくいきません。その結果、私はこのヘルパー関数を2次元配列のすべての単一のセルにマップするようにしました。私は私の2Dマップでのx、セルのYインデックスを使用する必要がある場合ネストマッピング:私は私の外側の配列
// makes transformations on the cell level in a 2d array
export const twoDMap = (twoDimensionalArray, mapFunction) => {
return twoDimensionalArray.map((row, y) => {
return row.map(mapFunction);
})
}
これは、以外のほとんどの時間を正常に動作します。以下のテストケースでは、私はセルのy値にアクセスできないようです。
var testArray = [[true, "random-string", 3],
["potato", false, 4],
[null, 4, 5]];
function twoDMap(twoDimensionalArray, mapFunction) {
return twoDimensionalArray.map(function (row, y) {
return row.map(mapFunction);
})
}
function logCells(cells) {
twoDMap(cells ,function(cell, x) {
console.log(cell, "location: ", x);
// console.log(cell, "location: ", x, y); //throws an error
})
}
logCells(testArray);
私はtwoDMap
への変更のいくつかの種類を作成する必要が確信している(私はES6構文を処分したので、コンソールで実行されます)、そしてそれはおそらくかなりマイナーだが、私はしましたこの問題は何時間も続いていますが、まだそれを動作させることはできません。私は(代わりにtwoDMap
の定期的なネストされたマップを使用して)手動でそれを書くとき、それが正常に動作しますが、それは過度に冗長だと私はそれがこのプロジェクトの一般的なパターンだと考えると、それを避けるためにしたいと思います。これは私が、私はこの問題をグーグルたび発見保つ一般的な提案ですが、それは私がこのプロジェクトのために行う必要がありますどのくらいのネスティング与えられた現実的なソリューションではありません。
基本的に、私はtwoDMap
を変更する方法や、私のコールバックがtwoDMap
に送信された2次元配列のX と yのインデックスにアクセスできるようにし、それに送られ、コールバックを探しています。
'row.map'を、あなたは別のparamとして' y'を受け入れるために、これを変更し、その後、mapFunctionコールバックが得られるように、コールバックにこれを渡すことができ、Yです。..しかし、私は2d配列にアクセスするためには、これが非常に畳み込まれているように見える必要があります。 – Keith
@Keith 'row.map'をどうやって変えるのですか?私は別のものを試しましたが、私がこれまで探していた結果を私に与えてくれるものは何もありません。場合によっては、配列( 'array [y] [x]')にアクセスするのが非常に簡単ですが、この場合、2次元配列の形状とサイズは可変です(平坦化すると一貫した結果が得られません)。 – JCLaHoot
作業スニペットを投稿できますか? – Keith