2

Javascriptで境界を確認したい2次元配列があります。私は、各インデックスを個別にチェックせずにこれを行うことを好みます。

たとえば、私の2D配列が...

dataset[row0-1][column+column0]

私は本当に次のことをする必要はありません...

if(row0-1 >0)
{
    if(dataset[row0-1].length >= column+column0)
    {
        data = {label : dataset[row0-1][column+column0]};
    }
}

問題は、最初に行をチェックしてから列をチェックする必要があることです。私は、これらのチェックの両方を1つの操作または1つの行で実行することを好みます。範囲外のエラーを返すのではなく、Javascriptがnullまたは未定義を返さないのはなぜですか?

たとえば、Javascriptの将来のバージョンでは、これを実行できればもっと良いのではないでしょうか。

if(dataset[row0-1][column+column0] != undefined)
{
   data = {label : dataset[row0-1][column+column0]};
} 
else 
{
    ...
}
4

5 に答える 5

2

チェックする関数を書くことができます:

function CheckArrayIndex(x, y) {
    if (dataset.length > x && dataset[x].length > y) {
        return dataset[x][y];
    }

    return null;
}

次に、次のように使用できます。

if(CheckArrayIndex(row0-1,column+column0) != null){
   data = {label : dataset[row0-1][column+column0]};
}
于 2012-07-09T16:19:29.497 に答える
1

各インデックスを個別にチェックする理由は、各ディメンションが各インデックスで異なる長さを持つ可能性があるためだと思います。

C# にはMultidimensional Arraysがあることは知っていますが、Javascript にはJagged Arraysが使用されています。

これがすぐに変わるとは思いません。

于 2012-07-09T16:17:28.157 に答える
0

私は主にこれが好きです:2D配列arrがあり、そこにない要素にアクセスする必要があるとしましょう。

var arr = [/*elements*/]
var get = function(x, y) {
  if(!arr[x]) {
      return false;
  }
  return arr[x][y] || false;
}
于 2013-01-12T11:41:21.873 に答える
0

AND 演算子&&を使用して、ネストされた if 句をワンライナーに簡単に組み合わせることができます。

if (row0-1 > 0 && dataset[row0-1].length >= column+column0){
    data = {label : dataset[row0-1][column+column0]};
}

ただし、0 より大きい (だけではない) 配列の長さを確認する必要があります。

if (row0-1 > 0 && row0-1 < dataset.length && column+column0 < dataset[row0-1].length)
    data = {label: dataset[row0-1][column+column0]};
}
于 2012-07-09T16:27:43.237 に答える