Javascript javasscript中的多维数组

Javascript javasscript中的多维数组,javascript,multidimensional-array,Javascript,Multidimensional Array,我从《傻瓜JavaScript》一书和下面的代码中学习,它说 console.log(bestAlbumsByGenre[0][1])//将输出:Patsy Cline:感伤地属于你的 var bestAlbumsByGenre=[] bestAlbumsByGenre[0]=“国家”; bestAlbumsByGenre[0][0]=“约翰尼·卡什:住在福尔松监狱” bestAlbumsByGenre[0][1]=“Patsy Cline:感伤地属于你”; bestAlbumsByGenre[

我从《傻瓜JavaScript》一书和下面的代码中学习,它说

console.log(bestAlbumsByGenre[0][1])//将输出:Patsy Cline:感伤地属于你的

var bestAlbumsByGenre=[]
bestAlbumsByGenre[0]=“国家”;
bestAlbumsByGenre[0][0]=“约翰尼·卡什:住在福尔松监狱”
bestAlbumsByGenre[0][1]=“Patsy Cline:感伤地属于你”;
bestAlbumsByGenre[0][2]=“汉克·威廉姆斯:我内心忧郁”;

但在控制台中,输出是:“o”。为什么会这样?我做错了什么?

您实际上并没有访问二维数组,而是访问字符串的第二个字符

执行以下操作时,您正在初始化字符串的一维数组:

当您执行以下操作时:

var bestAlbumsByGenre = [];
bestAlbumsByGenre[0] = "Country";
您为第一个元素指定了一个字符串

随后,其他声明没有做任何事

修理 以下内容修复了您的错误:


你好像把两种不同的练习弄混了。 以下行导致错误:

bestAlbumsByGenre[0] = "Country";
我已经清理了代码以使其正常工作

但是,我想我更喜欢一个对象,其中每个键代表一种类型,它们的值是一个数组

//定义外部数组
常数bestAlbumsByGenre=[];
//将数组的第一个元素设置为数组
bestAlbumsByGenre[0]=[];
//向第一个元素(数组)添加项
bestAlbumsByGenre[0][0]=“约翰尼·卡什:住在福尔松监狱”
bestAlbumsByGenre[0][1]=“Patsy Cline:感伤地属于你”;
bestAlbumsByGenre[0][2]=“弗兰克·威廉姆斯:我内心忧郁”;
console.log(bestAlbumsByGenre[0][1]);
//替代方法
const reallyBestAlbumsByGenre={
岩石:[],
};
reallyBestAlbumsByGenre.rock.push(“约翰尼·卡什:住在福尔松监狱”);
真的是最好的专辑《贝格纳·摇滚·推》(“帕特西·克莱恩:你的感情”);
reallyBestAlbumsByGenre.rock.push(“弗兰克·威廉姆斯:我内心是蓝色的”);

console.log(reallyBestAlbumsByGenre.rock[1]);
因为您想按流派组织相册,所以创建一个以流派为键的对象更有意义:

var bestAlbumsByGenre = {
    "Country": [
        "Johnny Cash: Live at Folsom Prison",
        "Patsy Cline: Sentimentally Yours",
        "Hank Williams: I’m Blue Inside",
    ]
}

该代码没有任何意义。[0][0]将是一个字符串,其行为就像是一个数组。该行应为
bestAlbumsByGenre[0]=[];
事实并非如此,您正在将字符串中的一个字符设置为字符串,在Js for Dummies中该字符在哪里?我已将您的代码添加到代码段中。单击“运行代码段”,您将看到错误。如果您将第二行中的
=“国家”;
替换为
=[]
,它将执行您可能想要的操作。这至少是一个实际的多维数组。可能是重复的,那么我如何从上面提到的code@Mattey
var bestAlbumsByGenre=[[]]
bestAlbumsByGenre[0][0]=“国家/地区";谢谢,但是我可以访问数组中的一些内部元素吗,可能是:bestAlbumsByGenre[0][1]/“Patsy Cline:感伤地属于你”;有办法吗it@Maltey:您试过了吗?在这种情况下,将外部数组的创建与内部数组的创建分开不是更好吗?奇怪的是,如果你添加了“Jazz”类别,并且必须将其专门添加到外部数组中,但是神奇的是,最初的“Country”类别就在那里。所以我会做
var-bestAlbumsByGenre=[]
然后是
bestAlbumsByGenre[0]=[]
。对于初学者来说,这似乎是一个更好的教学方法。这当然是正确的。但是OP提到这是一个试图理解初学者书中的一个例子的尝试。非常感谢,今天过得很愉快。同意@ScottSauyet,我要补充的是,这个练习是关于数组[],而不是对象{}非常感谢,干杯这是迄今为止最彻底的例子。它展示了如何使用2D数组修复练习中的问题,并解释了如何使用对象进行修复。
var bestAlbumsByGenre = {
    "Country": [
        "Johnny Cash: Live at Folsom Prison",
        "Patsy Cline: Sentimentally Yours",
        "Hank Williams: I’m Blue Inside",
    ]
}