2

私は次のように2次元配列を宣言しました:

a = [[]]

ただし、0以外の1番目のディメンションインデックスを使用して2番目のディメンション値を指定しようとすると、機能しません。

a[1][0] = "foo" //returns error

必要なすべてのインデックスを配列として手動で定義するよりも、これを回避するためのより良い方法はありますか?

a[1] = [];
a[2] = [];
a[3] = [];
//et cetera
4

6 に答える 6

8

N次元配列はjavascriptには存在しません-要素として配列を含む配列を作成する必要があります。

たまたま配列でもある1つのa = [[]];要素を持つ配列を宣言しているため、エラーが発生します。したがって、は内部配列ですが、宣言したことがないため存在しません。「2次元配列」を適切に宣言する最も簡単な方法は、ループを使用することです。a[0]a[1]

var outerArray = [];
var numInternalArrays = 5;
for (var i = 0; i < numInternalArrays; i++) {
    outerArray[i] = [];
}
于 2013-01-24T20:48:30.860 に答える
5

ルート配列に必要な要素の数がわかっている場合は、次のようにすることができます。

var arr = 
    (Math.pow(2,10)-1).toString(2)  // Binary string of 1s. Its length being 10
    .split('')                      // Create an array from this string
    .map(function(){return [];});   // Map a new empty array to each index

console.log(arr);                   // [[],[],[],[],[],[],[],[],[],[]]

これは同じことを達成します:

for(var arr = [], i=10; i--; arr[i]=[]);

arrjavascriptにはブロックスコープがないため、forループの外側で宣言する必要はありません。実行されるスコープに追加されます。

于 2013-01-24T21:46:12.397 に答える
4
a = [[]]

これは配列であり、最初の項目は配列です。これが、最初のアイテムへのインデックス作成が引き続き機能する理由です(a [0] [0])。

2番目の項目に配列としてアクセスする場合は、配列を次のように作成する必要があります。

a = [[],[]]

JavaScriptで2次元配列を作成するにはどうすればよいですか?の例については、この質問を参照してください 。

于 2013-01-24T20:47:43.177 に答える
2

私が正しく理解している場合は、ループを使用してください。

for (var i = y; i--; a[i] = []);
于 2013-01-24T20:36:07.920 に答える
1

javascriptには多次元配列はありません。
実行しているのは配列の配列ですが、最も外側の配列には1つの要素(つまり要素0)しかなく、その値は別の配列です。したがって、最も外側の配列には要素が1つしかないため、a [1](またはより一般的にはa [1] [x])は無効です。
したがって、a [0] [x] = "foo"を実行できますが、その逆はできません。

したがって、forループを使用して配列を初期化するか、var a = [[] [] [][][]]のようなことを行うことができます。

于 2013-01-24T20:46:53.573 に答える
1

次のように、配列の配列を開始させることができます。

var a = []; // start with the column array

次に、場所に何かを配置する場合は、[i][j]「i」を行インデックス、「j」を列インデックスと呼びます。

if (!a[i]) {   // check for row existing
    a[i] = []; // .. and create it if not 
}
a[i][j] = 'foo'; // put something in the array cell

これが機能するのは、作成直後に常に新しい行配列に何かを入れているためです。'foo'の代わりに0または""を入力すると、機能しない場合があります。

javascriptには、「null」と「undefined」と「0」を含む「false」であることがたくさんあります。空の配列または空の文字列である1つの要素を持つ配列がfalseと見なされるかどうかはわかりません。 。したがって、行の欠落している配列を正確に検出して追加できるようにする方法を実験する必要があります。

于 2013-01-24T21:24:59.217 に答える