#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]