2次元ヒートマップを作成しています。これは、ピクセルをクリックすると機能があります。これは、すべてのピクセル(、隣接ピクセルを含む)のインデックスに関連付けられたデータを取得し、それをプロットします。これは、現在、次のようになります。私は、左または右のエッジ画素をクリックしたときに、隣接する画素からのデータをつかむため、私が遭遇してるJavascriptで1次元配列のエッジケースを特定する
問題は、ある、それは反対側からデータを取り出すことができますグラフはすべて1次元配列内にあるためです。私は、クリックされたピクセルが端の場合であるかどうかをチェックし、拡大されたグラフをメイングラフの反対側からの点を表示しないように構成する条件を作成しようとしています。私は2次元配列を持っていたかのように同じ結果を取得しようとし、単一のアレイ内の隣接する値が定義されていない時に発見しています
// pushes all dataMagnified arrays left and right of i to magMainStore
var dataGrabber = function(indexGrabbed, arrayPushed) {
// iterates through all 5 pixels being selected
for (var b = -2; b <= 2; b++) {
var divValue = toString(i/cropLength + b);
// checks if selected index exists, and if it is not in the prior row, or if it is equal to zero
if (dataMagnified[indexGrabbed + b] != undefined && (& divValue.indexOf(".")!=-1)) {
dataMagnified[indexGrabbed + b].forEach(function(z) {
arrayPushed.push(z);
})
}
}
};
:これは私がこれまで持っているコードです。これは私がその条件を作成している行です。
if (dataMagnified[indexGrabbed + b] != undefined && (& divValue.indexOf(".")!=-1)) {
これまでの2番目の条件はこれを理解しようとしています。 5回繰り返すforループや、これに対して複数の条件を作成しなければならない場合でも、これを行うことができるのかどうかは不明です。また、ここで私が何をしようとしている画像表示です:
ありがとうございました!
を[ここで全体のコードベースがあります](https://github.com/AstroBoogie/BL-files/blob/master/BL_waterfall /js/backup.js)変数が不明な場合。 – AstroBoogie
320x200x256グラフィックスの1d arryを使用すると、画面の左端にあるピクセルのインデックスは0,320,640,960です。つまり、右側のピクセルは幅1、(2 *幅)-1、したがって、[width-1..width]のインデックスには注意が必要です。ループ・アンローリングは、コンパイラが(しばしば)適用する最適化です。彼らは速く(同じまたはほぼ同じコードを繰り返す)コードを実行するためのコード(ループ)を読み書きするように素早く切り替わります。 – enhzflep
@enhzflepだから私は自分の考えを[擬似コードとして]整理したと思うが(http://pastebin.com/cDriBUb5)、残りのforループでどのように実装するのか分からない。すべてのために個別のif文を作成するか、それを行うより良い方法がありますか?また、私はループアンローリングが何であるかは分かりません。ループアンローリングを実装すべきか、それともJSが単独で行うのですか? – AstroBoogie