Tableau multidimensionnel dans javasscript


J'apprends du livre JavaScript pour les nuls , et du code suivant, il est dit

console.log( bestAlbumsByGenre[0][1] ) //will output: Patsy Cline:Sentimentally Yours

var bestAlbumsByGenre = []
bestAlbumsByGenre[0] = “Country”;
bestAlbumsByGenre[0][0] = “Johnny Cash: Live at Folsom Prison”
bestAlbumsByGenre[0][1] = “Patsy Cline: Sentimentally Yours”;
bestAlbumsByGenre[0][2] = “Hank Williams: I’ m Blue Inside”;

Mais dans la console, la sortie est: "o". Pourquoi est-ce, et ce que je fais mal?

Author: KJH, 2018-09-18

3 answers

Vous semblez avoir mélangé deux exercices différents. La ligne suivante entraîne l'erreur:

bestAlbumsByGenre[0] = "Country";

J'ai nettoyé le code pour le faire fonctionner.

Cependant, je pense que je préférerais un objet, où chaque touche représente le genre, et leur valeur est un tableau.

// Define the outer array
const bestAlbumsByGenre = [];

// Set the first element of the array as an array
bestAlbumsByGenre[0] = [];

// Add items to the first element (the array)
bestAlbumsByGenre[0][0] = "Johnny Cash: Live at Folsom Prison"
bestAlbumsByGenre[0][1] = "Patsy Cline: Sentimentally Yours";
bestAlbumsByGenre[0][2] = "Frank Williams: I’ m Blue Inside";

console.log(bestAlbumsByGenre[0][1]);

// Alternative approach
const reallyBestAlbumsByGenre = {
    rock: [],
};

reallyBestAlbumsByGenre.rock.push("Johnny Cash: Live at Folsom Prison");
reallyBestAlbumsByGenre.rock.push("Patsy Cline: Sentimentally Yours");
reallyBestAlbumsByGenre.rock.push("Frank Williams: I’ m Blue Inside");

console.log( reallyBestAlbumsByGenre.rock[1] ); 
 2
Author: dschu, 2018-09-18 14:54:07

Puisque vous voulez organiser les albums par genre, il serait plus logique de créer un objet avec le genre comme clé:

var bestAlbumsByGenre = {
    "Country": [
        "Johnny Cash: Live at Folsom Prison",
        "Patsy Cline: Sentimentally Yours",
        "Hank Williams: I’m Blue Inside",
    ]
}
 0
Author: Code-Apprentice, 2018-09-18 14:53:49

Vous n'accédez pas réellement à un tableau bidimensionnel, mais vous accédez au deuxième caractère d'une chaîne.

Vous initialisez un tableau de chaîne à 1 dimension lorsque vous faites:

Lorsque vous avez fait ce qui suit:

var bestAlbumsByGenre = [];
bestAlbumsByGenre[0] = "Country";

Vous avez affecté une chaîne au premier élément.

Par la suite, les autres déclarations n'ont rien fait.

Correction

Ce qui suit corrige votre erreur: "

var bestAlbumsByGenre = [[]]
bestAlbumsByGenre[0][0] = "Country";
 0
Author: Menelaos Bakopoulos, 2018-09-18 15:31:52