Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как создать многомерный массив и записать туда данные? (https://javascript.ru/forum/misc/83529-kak-sozdat-mnogomernyjj-massiv-i-zapisat-tuda-dannye.html)

Katy93 03.01.2022 15:28

Как создать многомерный массив и записать туда данные?
 
Здравствуйте, нужно создать многомерный массив и записать туда данные сделать это напрямую, вот так не получается.
arr[0][0]=1; Выдает ошибку

Uncaught TypeError: Cannot set property '0' of undefined

Предположительно массив нужно создать, я пробовола вот так let arr = []; Все равно ошибка. Как создать массив мне нужно занести данные.

arr[0][0]=1;
arr[0][1]=1;
arr[0][2]=1;
arr[0][3]=1;

arr[1][0]=2;
arr[1][1]=2;
arr[1][2]=2;
arr[1][3]=2;

arr[2][0]=3;
arr[2][1]=3;
arr[2][2]=3;
arr[2][3]=3;

....


arr[100][0]=100;
arr[100][1]=100;
arr[100][2]=100;
arr[100][3]=100;

рони 03.01.2022 16:22

Katy93,
let length = 101, l = 4;
let arr = Array.from({length}, (_, i) => Array(l).fill(++i));
console.log(arr)

ksa 03.01.2022 17:09

Katy93, нужно хоть немного почитать учебник...
https://learn.javascript.ru/array
И вот там есть про многомерные массивы. ;)
https://learn.javascript.ru/array#mnogomernye-massivy

Aetae 03.01.2022 20:47

Katy93, в js не существует многомерных массивов как таковых. Можно просто сделать массив из массивов. Выглядеть оно будет такаже при работе, но возникает нюанс: чтобы в массиве лежал массив - его надо туда положить:
let arr = []; // обычный массив
let arr[0] = []; // массив в котором по индексу 0 лежит другой массив 
arr[0][0]=1; // работаем с этой конструкцией как с многомерным массивом

Katy93 03.01.2022 21:14

Как теперь переписать созданный массив, почему-то только первые несколько элементов массива заменяются, а остальные данные остаются от старого массива, вот пример кода.
let length = 101, l = 4;
let arr5 = Array.from({length}, (_, i) => Array(l).fill(++i));


    


 testObj = function()
    {

      
      this.add1 = function(a,b,c,d)
      {
      
        hsize++;
        arr5[hsize-1,0]=a;
        arr5[hsize-1,1]=b;
        arr5[hsize-1,2]=c;
        arr5[hsize-1,3]=d;
        
        //console.log(hsize-1);
      }
    }
//Попытка переписать массив
 for(var i = 0; i < 101; i++)
 {
   mx.add1(a1[i],b1[i],c1[i],1);
 }

Aetae 03.01.2022 21:21

arr5[hsize-1,0] -> arr5[hsize-1][0]

Ещё раз, в js нет многомерных массивов, есть только массив массивов.
Запись arr5[hsize-1,0] означает arr5[(hsize-1,0)], где (hsize-1,0) возвращает 0 с помощью оператора запятая. Т.е. arr5[hsize-1,0] это то же самое что arr5[0].

ksa 03.01.2022 21:25

Katy93, еще раз напомню про таки "почитать учебник"... ;)

Katy93 05.01.2022 12:08

Все разобралась более простой способ создания многомерного массива.
let arr = new Array(768);

for (var i = 0; i < arr.length; i++) {
        arr[i] = new Array(4);
}


Часовой пояс GMT +3, время: 00:03.