Многомерный массив в JavaScript - PullRequest
       8

Многомерный массив в JavaScript

0 голосов
/ 18 сентября 2018

Я учусь по книге JavaScript для чайников , а из следующего кода написано

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”;

но в консоли вывод: "o".Почему так и что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Вы, кажется, перепутали два разных упражнения.Следующая строка приводит к ошибке:

bestAlbumsByGenre[0] = "Country";

Я очистил код, чтобы заставить его работать.

Однако, я думаю, я бы предпочел объект, где каждый ключ представляетжанр, а их значение представляет собой массив.

// 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] ); 
0 голосов
/ 18 сентября 2018

Поскольку вы хотите упорядочить альбомы по жанрам, было бы разумнее создать объект с ключом жанра:

var bestAlbumsByGenre = {
    "Country": [
        "Johnny Cash: Live at Folsom Prison",
        "Patsy Cline: Sentimentally Yours",
        "Hank Williams: I’m Blue Inside",
    ]
}
0 голосов
/ 18 сентября 2018

Вы на самом деле не обращаетесь к двумерному массиву, но вы обращаетесь ко второму символу строки.

Вы инициализируете одномерный массив строки, когда делаете:

Когда высделал следующее:

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

Вы присвоили строку первому элементу.

Впоследствии другие операторы ничего не сделали.

Исправление

Следующее исправление вашей ошибки: "

var bestAlbumsByGenre = [[]]
bestAlbumsByGenre[0][0] = "Country";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...