Как создать двумерный массив в JavaScript?
Проблема с двумерными массивами в JavaScript
Я читал статьи в интернете, и нашел противоречивую информацию: некоторые утверждают, что создать двумерный массив в JavaScript невозможно, другие говорят, что это вполне реально и даже приводят примеры, в то время как третьи опровергают эти примеры и так далее.
Как мне объявить двумерный массив в JavaScript? (предполагая, что это возможно)
Как мне получить доступ к его элементам? Использовать
myArray[0][1]
илиmyArray[0,1]
?
5 ответ(ов)
Чтобы создать массив, где каждый элемент также является массивом, вы можете инициализировать каждый элемент основного массива как отдельный массив. Вот как это можно сделать:
var x = new Array(10); // Создаем массив из 10 элементов
for (var i = 0; i < x.length; i++) {
x[i] = new Array(3); // Каждому элементу присваиваем новый массив из 3 элементов
}
console.log(x); // Выводим результат в консоль
В результате вы получите массив x
, содержащий 10 массивов, каждый из которых состоит из 3 элементов. Если вам нужно инициализировать массивы значениями (например, нулями), вы можете дополнительно воспользоваться вложенным циклом.
Подобно ответу актива, вот функция для создания n-мерного массива:
function createArray(length) {
var arr = new Array(length || 0),
i = length;
if (arguments.length > 1) {
var args = Array.prototype.slice.call(arguments, 1);
while(i--) arr[length-1 - i] = createArray.apply(this, args);
}
return arr;
}
createArray(); // [] или новый Array()
createArray(2); // новый Array(2)
createArray(3, 2); // [новый Array(2),
// новый Array(2),
// новый Array(2)]
Эта функция createArray
позволяет создавать многомерные массивы. Первый аргумент указывает длину самого внешнего массива, а последующие аргументы задают размеры внутренних массивов. Когда первый аргумент отсутствует или равен нулю, функция возвращает пустой массив.
Примеры использования показывают, как можно создавать массивы нужной размерности.
JavaScript действительно поддерживает только одномерные массивы, однако, как уже отмечали другие, можно создавать массивы массивов, чтобы реализовать многомерные массивы.
Вот функция, которая позволяет создать двумерный массив фиксированных размеров:
function Create2DArray(rows) {
var arr = [];
for (var i = 0; i < rows; i++) {
arr[i] = [];
}
return arr;
}
Количество столбцов на самом деле не имеет значения, так как в JavaScript не требуется указывать размер массива перед его использованием.
Вы можете просто вызвать эту функцию:
var arr = Create2DArray(100);
arr[50][2] = 5;
arr[70][5] = 7454;
// ...
Таким образом, вы можете динамически добавлять элементы в массивы на лету.
Наиболее простой способ создать пустой многомерный массив в JavaScript выглядит так:
var myArray = [[]];
Этот код создает массив myArray
, содержащий один элемент — пустой массив.
Причина, по которой некоторые утверждают, что это невозможно, заключается в том, что двумерный массив на самом деле представляет собой массив массивов. Другие комментарии здесь предоставляют совершенно верные методы создания двумерных массивов в JavaScript, но с самой чистой точки зрения можно сказать, что у вас есть одномерный массив объектов, каждый из которых является одномерным массивом, состоящим из двух элементов.
Таким образом, это и вызывает конфликтные точки зрения.
Слияние/выпрямление массива массивов
Как перемешать (сделать случайным) массив в JavaScript?
Как объединить два массива в JavaScript и удалить дубликаты?
Как очистить массив в JavaScript?
Выбор последнего элемента в массиве JavaScript