Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как создать двухмерный массив и заполнить его? (https://javascript.ru/forum/misc/84241-kak-sozdat-dvukhmernyjj-massiv-i-zapolnit-ego.html)

Olga27 18.07.2022 11:01

Как создать двухмерный массив и заполнить его?
 
Мне нужно создать двухмерный массив и заполнить его. Только этот массив с координатами, вот такого формата: {x:0,y:0}. При попытке сделать вот так:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Arc</title>
<script>
window.onload = function()
{
var i, j;

CircleArray = [];

var canvas = document.getElementById("drawingCanvas");
var context = canvas.getContext("2d");
context.beginPath();
context.arc(75, 75, 5, 0, 2 * Math.PI);
context.stroke();

CircleArray = [];
CircleArray.length = 15; 

for (var i = 0; i < CircleArray.length; i++) {
    CircleArray[i] = [{x:0,y:0}];
    CircleArray[i].length = 15; 
}

console.log(CircleArray);


init();



function init()
{
  zc = - 144;
  for (var i = 0; i < 15; i++)
  {
    for (var j = 0; j < 15; j++)
    {
        CircleArray[i][j].x = 50;
        CircleArray[i][j].y = 50;
        
        
    }
  }
}


}
</script>
</head>
<body>
<canvas id="drawingCanvas" width="500" height="400"></canvas>
</body>
</html>

Выдает ошибку:
line.html:41 Uncaught TypeError: Cannot set property 'x' of undefined

рони 18.07.2022 11:51

Olga27,
<!DOCTYPE HTML>
<html>

<head>
    <meta charset="utf-8">
    <title>Arc</title>
    <script>
     window.addEventListener("load", function() {
      let canvas = document.getElementById("drawingCanvas");
            let context = canvas.getContext("2d");
            context.beginPath();
            context.arc(75, 75, 5, 0, 2 * Math.PI);
            context.stroke();
            let length = 15,
                obj = { x: 0, y: 0};
            let CircleArray = Array(length).fill(Array(length).fill({ ...obj}));
            console.log(CircleArray);
            })
    </script>
</head>

<body>
    <canvas id="drawingCanvas" width="500" height="400"></canvas>
</body>

</html>

ksa 18.07.2022 12:47

Цитата:

Сообщение от Olga27
Выдает ошибку

Нужно добавлять создание массива... Ну и с объектом так же поработать. ;)
function init(){
  zc = - 144;
  for (var i = 0; i < 15; i++){
	CircleArray[i] = [];
    for (var j = 0; j < 15; j++){
        CircleArray[i][j] = {x: 50, y: 50};
    }
  }
}


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