Javascript多维数组问题

Javascript多维数组问题,javascript,multidimensional-array,Javascript,Multidimensional Array,我无法解决这个问题,我希望MD数组存储一本书的名称和价格。我知道使用两个数组更容易,但我真的想在javascript中给出一个MD数组。我尝试了几种方法,但只能让书名或书价显示两次。任何帮助都将不胜感激 var bookName = new Array(); for (var i = 0; i < 3; i++) { bookName[i] = new Array(); for (var j = 0; j < 1; j++) { bookNam

我无法解决这个问题,我希望MD数组存储一本书的名称和价格。我知道使用两个数组更容易,但我真的想在javascript中给出一个MD数组。我尝试了几种方法,但只能让书名或书价显示两次。任何帮助都将不胜感激

var bookName = new Array();

for (var i = 0; i < 3; i++) 
{
bookName[i] = new Array();

    for (var j = 0; j < 1; j++) 
    {
        bookName[i] = prompt("Please enter book name!");
        bookName[[i][j]] = prompt("Please enter book price!");
        document.write(bookName[i] + bookName[[i][j]] + "</br>");
    }
}

您正在覆盖您的书名[i]

bookName[i]=新数组;和bookName[i]=prompt请输入图书名称

试试这个:

var bookName = new Array();
for (var i = 0; i < 3; i++)  {
    bookName[i] = new Array();
    for (var j = 0; j < 1; j++)  {
        var name = prompt("Please enter book name!");
        var price = prompt("Please enter book price!");
        bookName[i][j] = {name:name, price:price}
        document.write(bookName[i][j].name + bookName[i][j].price + "</br>");
    }
}

以下是如何构建二维阵列:

var bookName = new Array();
for (var i = 0; i < 3; i++) 
{
    bookName[i] = new Array();
    bookName[i][0] = prompt("Please enter book name!");
    bookName[i][1] = prompt("Please enter book price!");
    document.write(bookName[i] + bookName[i][0] + ": " + bookName[i][1] + "</br>");
}
也可以对阵列中的对象执行此操作:

var bookName = new Array();
for (var i = 0; i < 3; i++) 
{
    bookName[i] = {};
    bookName[i]["name"] = prompt("Please enter book name!");
    bookName[i]["price"] = prompt("Please enter book price!");
    document.write(bookName[i] + bookName[i].name + ": " + bookName[i].price + "</br>");
}
与此相反:

bookName[i] = prompt("Please enter book name!");
bookName[[i][j]] = prompt("Please enter book price!");
document.write(bookName[i] + bookName[[i][j]] + "</br>");
这样做:

bookName[i][j][0] = prompt("Please enter book name!");
bookName[i][j][1] = prompt("Please enter book price!");
document.write(bookName[i][j][0] + bookName[i][j][1] + "</br>");

我认为我以前从未见过var[[I][j]]格式…

我认为您应该使用对象数组来实现这一点:

var books = [];
for(var i = 0; i < 3; i++) {
  books.push({
    name: prompt("Please enter book name!"),
    price: prompt("Please enter book price!")
  });
  document.write(books[i].name + books[i].price + "</br>");   
}
如果愿意,可以改为使用数组数组:

var books = [];
for(var i = 0; i < 3; i++) {
  books.push([prompt("Please enter book name!"), prompt("Please enter book price!")]);
  document.write(books[i][0]+ books[i][1] + "</br>");   
}

多维数组在这里没有多大意义,您可能需要一个对象数组

var books = [], i = 3;

while( i-- ) {
    books.push({
        name: prompt("Please enter book name!"),
        price: prompt("Please enter book price!")
    });
}

我不知道你在那里干什么。请熟悉JavaScript中数组、对象和属性访问的概念

var bookName=新数组

for (var i = 0; i < 3; i++) 
{
bookName[i] = new Array();
// the i. item of bookname holds an empty array now

    for (var j = 0; j < 1; j++) 
    {
        bookName[i] = prompt("Please enter book name!");
// you're overwriting the array just created with a string now
        bookName[[i][j]] = prompt("Please enter book price!");
// this is absolutely invalid syntax
        document.write(bookName[i] + bookName[[i][j]] + "</br>");
// as well as this
    }
}
你想做什么:

var bookName = new Array();
for (var i = 0; i < 3; i++) {
    bookName[i] = new Array();
    for (var j = 0; j < 1; j++) {
        // this is absolute ugly in a for loop:
        if (j==0)
            bookName[i][j] = prompt("Please enter book name!");
        else if (j==1)
            bookName[i][j] = prompt("Please enter book price!");
    }
    // direct accessing is better:
    document.write(bookName[i][0] + bookName[i][1] + "</br>");
}
但这样做要容易得多:

var bookName = [];
for (var i = 0; i < 3; i++) {
    bookName[i] = {
        name: prompt("Please enter book name!"),
        price: prompt("Please enter book price!")
    };
    document.write(bookName[i].name + bookName[i].price + "</br>");
}

这样就可以了。

我不确定你想要什么样的结构。您想让它执行类似[[name,price]、[name2,price2]]的操作吗?并使用对象文字和数组文字而不是重复的bookName[i][prop]assignments@Peter,我喜欢你的答案,我当然会用类似的方式编码。但是在这个答案上,我决定让代码结构更接近操作代码,因为我认为这对他来说更容易理解。你能解释一下这部分在做什么吗?bookName[i][j]={name:name,price:price}这是为bookName[i][j]分配一个类似hashmap的对象,key=name,value=variable name,price key='price'和value=price variable也是如此。这里有许多有效的解决方案,但这可能就是我要使用的解决方案。最简洁,最容易理解。
var bookName = [];

for (var i = 0; i < 3; i++)

{
  var b = bookName[i];
  b = [];
  for (var j = 0; j < 1; j++) 
  {
    bookName[i] = prompt("Please enter book name!");
    b[j] = prompt("Please enter book price!");
    document.write(bookName[i] + b[j] + "</br>");
  }
}