Javascript javasscript中的多维数组
我从《傻瓜JavaScript》一书和下面的代码中学习,它说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[
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@Matteyvar 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",
]
}