-1

このように作成した2次元配列があります

var books = new Array();  // create an Array
        var book1 = new Array();
      book1.push("1");
      book1.push("adfgsdg");
      book1.push("dfgsdfg");
      book1.push("dfgds");
      book1.push("44.95");
      book1.push("dfgsd");
      book1.push("dfgsdg");
      books.push(book1);
    var book2 = new Array();
      book2.push("2");
      book2.push("gdhff");
      book2.push("fghfd");
      book2.push("fghdf");
      book2.push("44.95");
      book2.push("2000-12-16");
      book2.push("fghfghd");
      books.push(book2);

新しい book3、book4.... 配列を動的に作成し、books 配列にプッシュする方法を教えてください。

4

2 に答える 2

2

オブジェクトを使用するだけです。

var books = {book1: ['book1 title', 'book1 - title2']};
books['book2'] = ['book2 titles'];
books.book3 = [];//works, too
books.book3.push('foobar');

特定の配列を参照する変数を使用することを主張する場合、それは非常に簡単に実行できます。

var book2 = books.book2;//arrays are objects, so:
book2.push('A second title');
console.log(books.book2[1]);//logs "A second title"

簡単-簡単。動的な名前の前に、簡単な例を示します。

books['book' + someVar] = [];

正常に動作します。

@raghawが指摘したように、おそらくあなたはいくつかの説明で行うことができます:
JavaScriptは実際には連想配列をサポートしておらず、代わりにオブジェクトが使用されます(配列でさえ「pimped」オブジェクトですが、それは別の問題です)

コンストラクトを呼び出すことで(あなたが行ったように)任意のオブジェクトの新しいインスタンスを作成できますがnew X()、ネイティブオブジェクトタイプ(ArrayやObjectなど)の場合、それは推奨されません(たとえば、動作が異なります)new Array(10);。 そのような場合、リテラル表記が優先されます。new Array('10')

var wrong = new Object();//not "wrong", but impredictable 
var better = {};//or new [whateverTypeOfObject]();
//ditto for arrays:
var dangerous = new Array();
var safe = [];

すでに存在する特定の値のセットをオブジェクト/配列に割り当てるには、次のように入力するだけです

var myObject = {key: "value",
                theValue: {can: 'be',
                           anything: ["even", "another", "object"]}
               };

データには、ドット表記またはブラケット表記の両方を使用してアクセスできます。

console.log(myObject.theValue['can']);//be
//===
console.log(myObject.theValue.can);//be
//===
console.log(myObject["theValue"]["can"]);//be

変数をキーとして使用している場合は、角かっこ表記を使用する必要があります。MDNをチェックしてさらに情報が必要な場合は、そのサイトでしばらく時間をかけてください。これはJSの参考資料です。

于 2012-12-15T10:30:11.997 に答える
0

まず、Elias さんの回答はとても良いと思います。ただし、オブジェクト指向に行く気がない場合は、コメントで raghavv が言ったように book 3 と 4 を作成し、それらをすべて books 配列にプッシュします。

books.push(books1);
books.push(books2);
books.push(books3);
books.push(books4);

その結果は実際には次のようになります

var books[
    books1[value1, value2, value3],
    books2[value1, value2, value3],
    books3[value1, value2, value3],
    books4[value1, value2, value3]
];
于 2012-12-15T10:44:31.263 に答える