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

Если вы используете Vim, нажмите escape, а затем введите

gg = G

. Это автоматически отбрасывает все и очищает все пробелы, которые вы вложили.

1042
задан royhowie 20 April 2015 в 02:52
поделиться

9 ответов

 var items = [[1, 2], [3, 4], [5, 6]]; console.log (элементы [0] [0]); // 1 console.log (items [0] [1]); // 2 console.log (items [1] [0]); // 3 console.log (items [1] [1]); // 4 console.log (items); 
1207
ответ дан 19 December 2019 в 20:19
поделиться

Создает n размерный матричный массив для Сценария Java, заполняющегося начальным значением по умолчанию значения 0.

function arr (arg, def = 0){
      if (arg.length > 2){
        return Array(arg[0]).fill().map(()=>arr(arg.slice(1)));
      } else {
        return Array(arg[0]).fill().map(()=>Array(arg[1]).fill(def));
      }
    }

// Simple Usage of 4 dimensions
var s = arr([3,8,4,6])

// Use null default value with 2 dimensions
var k = arr([5,6] , null)
0
ответ дан 22 November 2019 в 20:43
поделиться

строка и размеры Столбца массив известный только в время выполнения затем в соответствии с методом могло использоваться для создания динамический 2-й массив .

var num = '123456';
var row = 3; // Known at run time
var col = 2; // Known at run time
var i = 0;

var array2D = [[]];
for(var r = 0; r < row; ++r)
{
    array2D[r] = [];
    for(var c = 0; c < col; ++c)
    {
        array2D[r][c] = num[i++];
    }
}
console.log(array2D); 
// [[ '1', '2' ], 
//  [ '3', '4' ], 
//  [ '5', '6' ]]

console.log(array2D[2][1]); // 6
1
ответ дан 22 November 2019 в 20:43
поделиться

Javascript only has 1-dimensional arrays, but you can build arrays of arrays, as others pointed out.

The following function can be used to construct a 2-d array of fixed dimensions:

function Create2DArray(rows) {
  var arr = [];

  for (var i=0;i<rows;i++) {
     arr[i] = [];
  }

  return arr;
}

The number of columns is not really important, because it is not required to specify the size of an array before using it.

Then you can just call:

var arr = Create2DArray(100);

arr[50][2] = 5;
arr[70][5] = 7454;
// ...
81
ответ дан 19 December 2019 в 20:19
поделиться

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

Итак, в этом причина противоречивых точек зрения.

44
ответ дан 19 December 2019 в 20:19
поделиться

Подобно ответу activa, вот функция для создания 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();     // [] or new Array()

createArray(2);    // new Array(2)

createArray(3, 2); // [new Array(2),
                   //  new Array(2),
                   //  new Array(2)]
188
ответ дан 19 December 2019 в 20:19
поделиться

Двумерные массивы создаются так же, как и одномерные массивы. И вы обращаетесь к ним как array [0] [1] .

var arr = [1, 2, [3, 4], 5];

alert (arr[2][1]); //alerts "4"
16
ответ дан 19 December 2019 в 20:19
поделиться

Вы просто превращаете каждый элемент в массиве в массив.

 var x = new Массив (10); for (var i = 0; i 
427
ответ дан 19 December 2019 в 20:19
поделиться

Вы можете выделить массив строк, где каждая строка представляет собой массив одинаковой длины. Или вы можете выделить одномерный массив с элементами строки * столбцы и определить методы для сопоставления координат строки / столбца с индексами элементов.

Какую бы реализацию вы ни выбрали, если вы заключите ее в объект, вы можете определить методы доступа в прототип, чтобы упростить использование API.

3
ответ дан 19 December 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: