7

以下のコードでは、「プッシュは関数ではありません」というエラーが表示されます。ここで私が間違っていることを誰かに教えてもらえますか? Javascript で 2D 配列を作成しようとしています。

var myArray = new Array(4);
myArray = ["0","0","0","0"];

for (var i=0; i<myArray.length; i++) {
    myArray[i].push("ID");
    myArray[i] = new Array(1);
    for (var j=0; j<myArray[i].length; i++) {
        myArray[i][j].push("Array[j]");
    }
}

Firebugは私に次のことを指摘しています:

myArray[i].push("ID");

この行では、「TypeError: myArray[i].push は関数ではありません」というメッセージが表示されます

最終的な配列は次のようになります。

[ID,"SomeValue1"],
[ID,"SomeValue2"],
[ID,"SomeValue3"]

また、ハードコーディングすることはできません。DB のデータに基づいて動的に作成する必要があります。

4

3 に答える 3

6
myArray[i].push("ID");

Arrayもちろん、それはその要素ではなくのために定義された関数であるため、無効です。

有効な構文は

myArray.push("ID");

詳細についてarray.push()は、こちらをご覧ください。

于 2013-01-10T12:18:44.870 に答える
5

これにより、例が作成されます。

var myArray = new Array(4);
for (var i = 0; i < myArray.length; i++) {
  myArray[i] = ["ID", "SomeValue" + (i+1)];
}

しかし、データベースからデータを設定する必要がある場合、それは Javascript でどのように設定されるのでしょうか? 別の配列にある場合は、次のことができます。

var dbArray = ["SomeValue1", "SomeValue2", "SomeValue3"];

var myArray = new Array(dbArray.length);
for (var i = 0; i < myArray.length; i++) {
  myArray[i] = ["ID", dbArray[i]];
}
于 2013-01-10T12:30:24.187 に答える
3

まず第一に、[]常に推奨される配列リテラルを使用して配列を初期化できます

次にpush、Array メソッドです。したがって、配列で呼び出す必要があります

myArray[i]配列の要素myArray、配列

var arr = [];

for (var i = 0; i  < 5;i++) {
  arr.push = []; //Uses the Arrays push method
  for ( var j = 0; j < 5; j++)
    arr[i][j] = "Asd"; //Sets an Element
}
  console.log(arr);

そして、配列を「薄暗くする」必要がないことがわかるように、配列を変数に割り当てて、その中に要素をプッシュし始めることができます。

例でわかるように、初めて

pushの直後にarrあり、その配列メソッドであり、配列に新しい要素を追加します

2 番目の例では、Element にアクセスして値を直接割り当てています。


コードで行っていることは、Elements Array で push メソッドを呼び出そうとしています。

次にiあると仮定する0

'myArray[i]' は"0"あり、文字列"0"にはメソッド プッシュがありません。

ただし、新しい文字列を要素に直接割り当てることができます。

myArray[i] = "ID"

于 2013-01-10T12:18:01.640 に答える