3

2d JS 配列で 2d デカルト座標を表現したいと思います。2d スペースのサイズは不定です (-x および -y スペースにも拡張できます)。これは、正の x および y 値には問題ありませんが、JS 配列の最小インデックスが 0 の場合、負の x および y 空間に拡張できません。

JS で負のインデックスを使用する可能性に関する短い情報を読みましたが、技術的には可能ですが、適切にサポートされていません (たとえば、配列関数が正しく機能しない可能性があります)。

他の人にも同様の要件があったに違いないと確信しているので、質問したいのですが、JSでこれをモデル化する推奨される方法は何ですか? 負の配列インデックスは実行可能な解決策ですか?

4

1 に答える 1

1

負のインデックスが必要ですか? 通常、コンピュータ グラフィックスのすべての座標系は、画面の左上隅の (0/0) から始まります。そして、彼らは軸を別の場所に引きます。

したがって、有限サイズの解決策は、座標を変換するだけです。また、配列に負のインデックスを使用することもできますが、「配列オブジェクトのキー」と呼ぶ方が適切です。それらの制限がわかっている場合は、それらを使用できます。

  • Array.length は、正のインデックスに対してのみ機能します。
  • したがって、0 から a.length までループすることはできません。別の解決策を見つける必要があります。(そしてfor-inを考えないでください)。
  • したがって、ループの負の開始を決定する必要があります。それを定数にするか、配列オブジェクトの別のプロパティにします (自動更新機能なしで!)。

しかし、あなたはあなたのスペースが不確定だと言います。問題は、プログラミング言語に無限のデータ構造がないことです。もちろん、配列インデックスは非常に大きくなる可能性がありますが、本当に必要ですか? サイズが (2^32)^2 の 2 次元配列は、メモリ空間を大量に浪費するだけでなく、少なくともアプリケーションを非常に遅くするものであると確信しています。

点を表すオブジェクトを含む 1 次元配列を考えたほうがよいかもしれません。簡単にループでき、座標値に任意の数を指定でき、それほど多くのメモリは必要ありません。

于 2012-04-12T09:04:53.170 に答える