-1

我有一个像这样创建的二维数组

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 并不真正支持关联数组,而是使用对象(即使数组也只是“拉皮条”对象,但这是另一回事)

您可以通过调用构造 ( ,就像您所做的那样) 创建任何对象的新实例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 的回答非常好。但是,如果您没有心情去 OO,只需按照 raghavv 在评论中所说的创建书籍 3 和 4,然后将它们全部推送到书籍数组中

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 回答