14

Как создать двумерный массив в JavaScript?

10

Проблема с двумерными массивами в JavaScript

Я читал статьи в интернете, и нашел противоречивую информацию: некоторые утверждают, что создать двумерный массив в JavaScript невозможно, другие говорят, что это вполне реально и даже приводят примеры, в то время как третьи опровергают эти примеры и так далее.

  1. Как мне объявить двумерный массив в JavaScript? (предполагая, что это возможно)

  2. Как мне получить доступ к его элементам? Использовать myArray[0][1] или myArray[0,1]?

5 ответ(ов)

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 элементов. Если вам нужно инициализировать массивы значениями (например, нулями), вы можете дополнительно воспользоваться вложенным циклом.

2

Подобно ответу актива, вот функция для создания 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 позволяет создавать многомерные массивы. Первый аргумент указывает длину самого внешнего массива, а последующие аргументы задают размеры внутренних массивов. Когда первый аргумент отсутствует или равен нулю, функция возвращает пустой массив.

Примеры использования показывают, как можно создавать массивы нужной размерности.

0

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;
// ...

Таким образом, вы можете динамически добавлять элементы в массивы на лету.

0

Наиболее простой способ создать пустой многомерный массив в JavaScript выглядит так:

var myArray = [[]];

Этот код создает массив myArray, содержащий один элемент — пустой массив.

0

Причина, по которой некоторые утверждают, что это невозможно, заключается в том, что двумерный массив на самом деле представляет собой массив массивов. Другие комментарии здесь предоставляют совершенно верные методы создания двумерных массивов в JavaScript, но с самой чистой точки зрения можно сказать, что у вас есть одномерный массив объектов, каждый из которых является одномерным массивом, состоящим из двух элементов.

Таким образом, это и вызывает конфликтные точки зрения.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь