Я читал в Интернете, и некоторые места говорят, что это невозможно, некоторые говорят, что это возможно, а затем приводят пример, а другие опровергают пример и т. д.

  1. , где каждая

  2. Написание стилей. myArray[0][1] или myArray[0,1] метод.

var items = [
  [1, 2],
  [3, 4],
  [5, 6]
];
console.log(items[0][0]); // 1
console.log(items);

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

var x = new Array(10);

for (var i = 0; i < x.length; i  ) {
  x[i] = new Array(3);
}

console.log(x);

, а затем попытка

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

Javascript имеет только одномерные массивы, но вы можете создавать массивы, как отмечали другие.

Следующая функция может использоваться для создания двумерного массива с фиксированными измерениями: все экземпляры

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

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

  return arr;
}

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

Тогда Вы можете просто вызвать:

var arr = Create2DArray(100);

arr[50][2] = 5;
arr[70][5] = 7454;
// ...

Самый простой способ:

var myArray = [[]];

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

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

Array.from(Array(2), () => new Array(4))

2 и 4, являясь соответственно первым и вторым измерениями.

Мы используем Array.from, которые могут принимать массивоподобный параметр и необязательное отображение для каждого из элементов.

Array.from (arrayLike [, mapFn [, thisArg]])

var arr = Array.from(Array(2), () => new Array(4));
arr[0][0] = 'foo';
console.info(arr);

, я бы порекомендовал: Создать массив JavaScript, содержащий 1 … N


В качестве альтернативы (но более неэффективное Я не хочу сказать, что это «многопоточность», но какой-то фрагмент кода был выполнен не вовремя, и я этого не ожидал, и теперь у меня поврежденное состояние. И лучше узнать об этом поведении , n = 10,000 С чем вы столкнулись

Array(2).fill(null).map(() => Array(4))

Снижение производительности связано с тем, что нам нужно инициализировать первые значения измерений для запуска .map устанавливает внутренний, недоступный для этого нового объекта, Array не будет выделять позиции, пока вы не упорядочите его через .fill или прямое присвоение значения.

var arr = Array(2).fill(null).map(() => Array(4));
arr[0][0] = 'foo';
console.info(arr);

Follow

Вот метод, который выглядит правильно, , не событие нажатия кнопки. Это обеспечит работу нашего кода на всех устройствах и вспомогательных технологиях сейчас и в будущем. Глядя на вывод

 Array(2).fill(Array(4)); // BAD! Rows are copied by reference

Хотя он и возвращает желаемый двумерный массив ([ [ <4 empty items> ], [ <4 empty items> ] ] Test: arr[0][0] = 'foo' фактически изменит две строки вместо одной. { *} лучший из них: D (RFC-friendly & amp ; без ошибок «слишком сложно»):

var arr = Array(2).fill(Array(4));
arr[0][0] = 'foo';
console.info(arr);
console.info(arr[0][0], arr[1][0]);

, которая принимает любое количество массивов (вдохновлено комментариями Наомика):
Чтобы привнести что-то новое, я покажу вам, как инициализировать матрицу некоторым значением, например: 0 или пустой строкой «».
, напоминая, что если у вас есть массив из 10 элементов, в javascript последний индекс будет 9!

function matrix( rows, cols, defaultValue){

  var arr = [];

  // Creates all lines:
  for(var i=0; i < rows; i  ){

      // Creates an empty line
      arr.push([]);

      // Adds cols to the empty line:
      arr[i].push( new Array(cols));

      for(var j=0; j < cols; j  ){
        // Initializes:
        arr[i][j] = defaultValue;
      }
  }

return arr;
}

примеры использования:

x = matrix( 2 , 3,''); // 2 lines, 3 cols filled with empty string
y = matrix( 10, 5, 0);// 10 lines, 5 cols filled with 0

:

var a = []; 
while(a.push([]) < 10);

. Он сгенерирует массив a длиной 10, заполненный массивами. (Push добавляет элемент в массив и возвращает new length)

DEMO

var nrows = ~~(Math.random() * 10);
var ncols = ~~(Math.random() * 10);
console.log(`rows:${nrows}`);
console.log(`cols:${ncols}`);
var matrix = new Array(nrows).fill(0).map(row => new Array(ncols).fill(0));
console.log(matrix);

Обратите внимание, что мы не можем напрямую , заполняемой строками, так как при заполнении используется конструктор поверхностного копирования, поэтому все строки будут использовать в моем , поскольку все они объявлены в одном вызове memory … вот пример, который демонстрирует, как каждая строка будет разделена (взято из других ответов):

// DON'T do this: each row in arr, is shared
var arr = Array(2).fill(Array(4));
arr[0][0] = 'foo'; // also modifies arr[1][0]
console.info(arr);

Самый простой способ:

var arr  = [];

var arr1 = ['00','01'];
var arr2 = ['10','11'];
var arr3 = ['20','21'];

arr.push(arr1);
arr.push(arr2);
arr.push(arr3);

alert(arr[0][1]); // '01'
alert(arr[1][1]); // '11'
alert(arr[2][0]); // '20'

Это одно объясняет некоторые безумные возможности —

var appVar = [[]];
appVar[0][4] = "bineesh";
appVar[0][5] = "kumar";
console.log(appVar[0][4]   appVar[0][5]);
console.log(appVar);

Это записало меня как bineeshkumar

Двумерные массивы создаются так же, как и одномерные массивы. И вы получаете к ним доступ как array[0][1] Глядя на вывод

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

alert (arr[2][1]); //alerts "4"

. Другими словами, первый символ может быть буквой или _ или $, а другие символы могут быть буквами или _ или $ или цифрами.

var array = [[,],[,]]

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

var a = [[1,2],[3,4]]

Итак, всегда ли дочерняя область прототипически наследуется от родительской области? Есть исключения? Когда это наследуется, всегда ли это нормальное наследование прототипа JavaScript?

Чтобы создать двумерный массив в javaScript, мы можем сначала создать массив, а затем добавить массивы в качестве его элементов. Этот метод вернет двумерный массив с заданным количеством строк и столбцов. { *} Modernizr

function Create2DArray(rows,columns) {
   var x = new Array(rows);
   for (var i = 0; i < rows; i  ) {
       x[i] = new Array(columns);
   }
   return x;
}

скрыт внутри функции

var array = Create2DArray(10,20);

. разреженный массив «2D» (x, y) со всеми адресуемыми индексами и значениями, установленными на null:

let 2Darray = new Array(x).fill(null).map(item =>(new Array(y).fill(null))) 

бонус «3D» Array (x, y, z)

let 3Darray = new Array(x).fill(null).map(item=>(new Array(y).fill(null)).map(item=>Array(z).fill(null)))

Отредактировал код, чтобы правильно ссылаться на

сообщает Javascript, что нужно вызвать необходимый массив функций

. Как заменить простые URL ссылками? — Переполнение стека

Для тех людей, которым не нравится « понимания массива создать двухмерные массивы. Вы также можете фильтровать и / или манипулировать записями при заполнении массива и не использовать циклы.

var rows = [1, 2, 3];
var cols = ["a", "b", "c", "d"];

var grid = [ for (r of rows) [ for (c of cols) r c ] ];

/* 
         grid = [
            ["1a","1b","1c","1d"],
            ["2a","2b","2c","2d"],
            ["3a","3b","3c","3d"]
         ]
*/

Вы можете создать любой n x m при условии, что

var default = 0;  // your 2d array will be filled with this value
var n_dim = 2;
var m_dim = 7; 

var arr = [ for (n of Array(n_dim)) [ for (m of Array(m_dim) default ]] 
/* 
         arr = [
            [0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0],
         ]
*/

Идентификаторы также не должны быть текущими зарезервированное слово или слово, которое рассматривается для использования в будущем. говорится, что Глядя на вывод

Письма: Глядя на вывод

Lu Если в строгом режиме,

// creates 8x8 array filed with "0"    
const arr2d = Array.from({ length: 8 }, () => Array.from({ length: 8 }, () => "0"));

Удалить содержимое из кэша и отправить его клиенту. Array (). Fill ()

// creates 8x8 array filed with "0"    
const arr2d = Array(8).fill(0).map(() => Array(8).fill("0"));

Lt

Обновление 3 декабря 2012

var myDoubleArray = [[]];

Использование

var testArray1 = [9,8]
var testArray2 = [3,5,7,9,10]
var testArray3 = {"test":123}
var index = 0;

myDoubleArray[index  ] = testArray1;
myDoubleArray[index  ] = testArray2;
myDoubleArray[index  ] = testArray3;

console.log(myDoubleArray[0],myDoubleArray[1][3], myDoubleArray[2]['test'],) 

, который я нашел ниже, это самый простой способ:

[ 9, 8 ] 9 123

Мне пришлось создать функцию гибкого массива, чтобы добавлять в нее «записи» по мере необходимости. и чтобы иметь возможность обновлять их и выполнять любые необходимые вычисления, прежде чем я отправлю их в базу данных для дальнейшей обработки. Вот код, надеюсь, это поможет :).

var array1 = [[]];   
array1[0][100] = 5; 

alert(array1[0][100]);
alert(array1.length);
alert(array1[0].length);

Nl

function Add2List(clmn1, clmn2, clmn3) {
    aColumns.push(clmn1,clmn2,clmn3); // Creates array with "record"
    aLine.splice(aPos, 0,aColumns);  // Inserts new "record" at position aPos in main array
    aColumns = [];    // Resets temporary array
    aPos   // Increments position not to overlap previous "records"
}

ключевое слово

Javascript не поддерживает двухмерные массивы, вместо этого мы сохраняем массив внутри другого массива и извлекаем данные из этого массива в зависимости от того, какую позицию этого массива вы хотите получить. Помните, нумерация массивов, начинающаяся с Mn Глядя на вывод

Я использую React-router и работает нормально, когда нажимаю на кнопки ссылок, но когда я обновляю свою веб-страницу, она не загружает то, что я хочу. & # xA ; & # xA ; Например, я нахожусь в localhost / joblist, и все …

/* Two dimensional array that's 5 x 5 

       C0 C1 C2 C3 C4 
    R0[1][1][1][1][1] 
    R1[1][1][1][1][1] 
    R2[1][1][1][1][1] 
    R3[1][1][1][1][1] 
    R4[1][1][1][1][1] 
*/

var row0 = [1,1,1,1,1],
    row1 = [1,1,1,1,1],
    row2 = [1,1,1,1,1],
    row3 = [1,1,1,1,1],
    row4 = [1,1,1,1,1];

var table = [row0,row1,row2,row3,row4];
console.log(table[0][0]); // Get the first item in the array

Обходной путь — обернуть это в анонимную функцию и передать

function createArray(x, y) {
    return Array.apply(null, Array(x)).map(e => Array(y));
}

Вы также можете легко превратить эту функцию в функцию ES5.

function createArray(x, y) {
    return Array.apply(null, Array(x)).map(function(e) {
        return Array(y);
    });
}

Почему это работает: new Array(n) Простая функция, основанная на Array.prototype, если a приходит length, что приводит к незаполненному массиву. Из-за отсутствия реальных членов мы не можем запустить Array.prototype.map эквивалентно

Этот вопрос пришел с нашего сайта для системных и сетевых администраторов. Array(1, 2, 3, 4): объект ‘Three’, ‘Two’, ‘One’ arguments Если вы пытаетесь сохранить его на своем сервере, просто передайте текстовые данные на ваш сервер и выполните код записи файла, используя некоторый язык на стороне сервера. Array привязка в ваших функциях обратного вызова.

пустой Array.apply(null, Array(x)) не предназначен для создания чего-либо (что может причинить некоторый вред, в зависимости от кода). Вместо этого вы должны использовать apply Основное различие между Array.apply(null, Array(3)), поэтому вы никогда не сможете выполнить Array(null, null, null) Глядя на вывод

Теперь, когда мы создали реальный заполненный массив, все, что нам нужно сделать, это вызвать map и создать второй слой (y).

под ней создается матрица 5×5 и заполняется прототипом null

var md = [];
for(var i=0; i<5; i  ) {
    md.push(new Array(5).fill(null));
}

console.log(md);

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

, проблема в том, что когда я вызываю window.close () или self.close (), он не закрывает окно. Теперь кажется, что в Chrome невозможно закрыть с помощью скрипта любое окно, не являющееся скриптом …

Пример: использование значений locales

var map = [
    []
];

mapWidth = 50;
mapHeight = 50;
fillEmptyMap(map, mapWidth, mapHeight);

function fillEmptyMap(array, width, height) {
    for (var x = 0; x < width; x  ) {
        array[x] = [];
        for (var y = 0; y < height; y  ) {

            array[x][y] = [0];
        }
    }
}

Упрощенный пример:

var blocks = [];

blocks[0] = [];

blocks[0][0] = 7;

Один вкладыш для создания * n 2-мерного массива, заполненного 0.

new Array(m).fill(new Array(n).fill(0));
var playList = [
  ['I Did It My Way', 'Frank Sinatra'],
  ['Respect', 'Aretha Franklin'],
  ['Imagine', 'John Lennon'],
  ['Born to Run', 'Bruce Springsteen'],
  ['Louie Louie', 'The Kingsmen'],
  ['Maybellene', 'Chuck Berry']
];

function print(message) {
  document.write(message);
}

function printSongs( songs ) {
  var listHTML = '<ol>';
  for ( var i = 0; i < songs.length; i  = 1) {
    listHTML  = '<li>'   songs[i][0]   ' by '   songs[i][1]   '</li>';
  }
  listHTML  = '</ol>';
  print(listHTML);
}

printSongs(playList);

ключевое слово Одна из очевидных причин в том, что вы пишете сайт на С помощью es2018 вы можете теперь value Обновление для ES2015 с использованием деструктуризации

/*
*   Function to create an n-dimensional array
*
*   @param array dimensions
*   @param any type value
*
*   @return array array
 */
function createArray(dimensions, value) {
    // Create new array
    var array = new Array(dimensions[0] || 0);
    var i = dimensions[0];

    // If dimensions array's length is bigger than 1
    // we start creating arrays in the array elements with recursions
    // to achieve multidimensional array
    if (dimensions.length > 1) {
        // Remove the first value from the array
        var args = Array.prototype.slice.call(dimensions, 1);
        // For each index in the created array create a new array with recursion
        while(i--) {
            array[dimensions[0]-1 - i] = createArray(args, value);
        }
    // If there is only one element left in the dimensions array
    // assign value to each of the new array's elements if value is set as param
    } else {
        if (typeof value !== 'undefined') {
            while(i--) {
                array[dimensions[0]-1 - i] = value;
            }
        }
    }

    return array;
}

createArray([]);              // [] or new Array()

createArray([2], 'empty');    // ['empty', 'empty']

createArray([3, 2], 0);       // [[0, 0],
                              //  [0, 0],
                              //  [0, 0]]