簡體   English   中英

二維數組未捕獲TypeError:無法設置未定義的屬性“ 0”

[英]Bidimensional Array Uncaught TypeError: Cannot set property '0' of undefined

我需要為頁面中的某個圓圈設置動畫,以實現此目的,我正在嘗試將該圓圈存儲在矩陣中。

var elementWidth = parseInt($('#svg').width()); //Take container element's width
var circleRadius = parseInt(elementWidth/10); //Calculate radius and the distance from a circle to another
var circleMatrix = [[]]; //The 2d matrix
var s = Snap("#svg"); //Initialize Snap (it's a svg framework)
var x,y=0; //My index

for(var i=0; i<=elementWidth; i+=circleRadius){
  x=0;
  for(var m=0; m<=elementWidth; m+=circleRadius){
    console.log("y("+y+"): "+i+" x("+x+"): "+m);
    circleMatrix[y][x] = s.circle(m,i,50);
    x++;
  }
  y++;
}

該代碼非常簡單,ai無法理解為什么返回此錯誤:

未捕獲的TypeError:無法設置未定義的屬性“ 0”

JavaScript實際上並沒有二維數組。 它有數組數組。

這行:

var circleMatrix = [[]]; //The 2d matrix

創建一個只有一個條目的數組:空數組。 因此,例如circleMatrix[1]undefined

您必須在需要外部數組的所有位置添加數組。 一種方法是添加:

if (!circleMatrix[y]) {
    circleMatrix[y] = [];
}

在此行之前:

circleMatrix[y][x] = s.circle(m,i,50);

例如:

var elementWidth = parseInt($('#svg').width()); //Take container element's width
var circleRadius = parseInt(elementWidth/10); //Calculate radius and the distance from a circle to another
var circleMatrix = [];                      // *** Changed
var s = Snap("#svg"); //Initialize Snap (it's a svg framework)
var x,y=0; //My index

for(var i=0; i<=elementWidth; i+=circleRadius){
  x=0;
  for(var m=0; m<=elementWidth; m+=circleRadius){
    console.log("y("+y+"): "+i+" x("+x+"): "+m);
    if (!circleMatrix[y]) {                 // *** Added
        circleMatrix[y] = [];               // *** Added
    }                                       // *** Added
    circleMatrix[y][x] = s.circle(m,i,50);
    x++;
  }
  y++;
}

要在JavaScript中創建2D矩陣,您必須執行以下操作:

var circleMatrix = [[],[],[]];

您必須提前知道什么維度,或者計划在迭代外循環時創建每個“行”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM