Проблема в определении многомерного массива javascript

#javascript #multidimensional-array

#javascript #многомерный массив

Вопрос:

это мой код javascript, который для определения многомерного массива

     var array = new Array(2);
    for (i = 0; i < array.length; i  ) {
        array[0] = new Array(4);
    }
    array[0][0] = "name1";
    array[0][1] = "property1";
    array[0][2] = "value1";
    array[0][3] = "0";

    //this is where the error happened
    array[1][0] = "name2";
    array[1][1] = "property2";
    array[1][2] = "value2";
    array[1][3] = "1";
  

но firebug сообщает мне об ошибке:
массив [1] не определен

которую я отмечаю в приведенном выше коде

Но массив [0][] я мог бы определить и присвоить им значение,

Итак, почему проблема возникла в этом месте?Спасибо

Ответ №1:

array[0] = new Array(4) должно быть array[i] = new Array(4) .

Это можно сделать гораздо более кратко с помощью литералов массива, хотя:

 var array = [
    ["name1", "property1", "value1", "0"],
    ["name2", "property2", "value2", "1"]
];
  

Ответ №2:

Ваш цикл переопределяет первый элемент массива.

 var array = new Array(2);
for (i = 0; i < array.length; i  ) {
    array[i] = new Array(4);
}
array[0][0] = "name1";
array[0][1] = "property1";
array[0][2] = "value1";
array[0][3] = "0";

//this is where the error happened
array[1][0] = "name2";
array[1][1] = "property2";
array[1][2] = "value2";
array[1][3] = "1";
  

Если это все, что вы делаете, вы можете решить это, используя сокращенный синтаксис

 var array = [
        [
            "name1",
            "property1",
            "value1",
            "0"
        ],
        [
            "name2",
            "property2",
            "value2",
            "1"
        ]
    ];
  

Ответ №3:

В JavaScript нет многомерных массивов. Однако у вас могут быть массивы массивов. Вот как вы можете создать то, что ищете:

 var array = [
    ["name1", "property1", "value1", "0"],
    ["name2", "property2", "value2", "1"]];
  

Комментарии:

1. JavaScript doesn't have multidimensional arrays . Что вы только что создали?

2. Значит, это не многомерный массив?

3. Почему понижающий голос? Массивы массивов — это не то же самое, что многомерные массивы. Многомерный массив — это массив с двумя фиксированными измерениями; JavaScript имеет только одномерные массивы, которые могут содержать другие массивы в качестве элементов.

4. В очень строгих математических терминах вы правы, но общепринятое использование «многомерный массив» означает «массив массивов» . 🙂

5. Неверно даже с точки зрения программирования. Создается неровный массив.

Ответ №4:

УВЕДОМЛЕНИЕ:

 for (i = 0; i < array.length; i  ) {
    array[0] = new Array(4);
}
  

Вы всегда инициализируете array[0] , но я думаю, вы хотите сказать array[i]