Javascript 从JQuery对象生成多维数组

Javascript 从JQuery对象生成多维数组,javascript,jquery,arrays,svg,Javascript,Jquery,Arrays,Svg,我有两个重要属性的svg圆圈列表:“seat”和“row”。顺序是随机的。我需要获取所有对象并制作一个数组,如下所示: arr[row1: seat1, seat2, seat3, ...] arr[row2: seat1, seat2, seat3, ...] arr[row3: seat1, seat2, seat3, ...] arr[row4: seat1, seat2, seat3, ...] 另一种形式:arr[row][seat] $(document).ready(funct

我有两个重要属性的svg圆圈列表:“seat”和“row”。顺序是随机的。我需要获取所有对象并制作一个数组,如下所示:

arr[row1: seat1, seat2, seat3, ...]
arr[row2: seat1, seat2, seat3, ...]
arr[row3: seat1, seat2, seat3, ...]
arr[row4: seat1, seat2, seat3, ...]
另一种形式:
arr[row][seat]

 $(document).ready(function() {
    var circles = $('circle');
    circles.each(function(){
        var circle = $(this);
        var row = circle.attr('rid');
        var seat = circle.attr('sid');

        rows[row][].push(seat);

    });
    console.log(rows);
});
不工作

请告知。 谢谢

更多说明:

我在这种形式下有很多svg圆圈:

<circle class="cls-1" cx="627.93" cy="494.42" r="3.5" fill="grey" id="964" seat="24" row="2" bal="1" group="0" gal="0" part="0" ts="0" sec="0" log="0" yar="0"></circle> 

我在每一行都有RID和SID,它们是不同的


我需要取所有的圆(1000+),得到它们的RID和SID,并将这两个ID以我写的形式放入数组中,所以首先你可以得到一个数组,你可以迭代,然后你做一个循环,将每个对象放在它的位置上,但要确保你不要试图在未定义的
中放置一些东西:

circles = $("circle");//We get the circles
arr = []; //Initialize first dimension
circles.each(function() { //This makes the loop
  row = Number($(this).attr("row")); //attr is always a string, we make it a number
  seat = Number($(this).attr("seat"));
  if( typeof arr[seat] === "undefined") //Check if second dimension is initialized, if not, we do it
    arr[seat] = [] // Initializing
  arr[seat][row] = $(this) //Save object
});

就是这样,现在你可以像
arr[2][3]

那样使用它,我们需要更多的代码来确保。但是从我现在看到的来看,我的第一个猜测是你没有在第二维度初始化数组。i、 e.第一次使用它时,应该使用类似于
arr[row]=[]
的东西对它进行初始化,除了最后一行之外,所有这些都与JavaScript语法毫无相似之处。你想干什么?我有一个圆圈的列表。顺序是随机的。我需要制作一个像我给出的那样的多数组。我猜,
arr[row1:seat1,seat2,seat3,…]
只是说明性的,因为这不是有效的代码。这个解释属于问题,而不是注释。出于某种原因,它将数字按顺序排列。我的文件没有排序。这是因为它们在数组中的输入方式,使用座位号和行号作为索引。如果你不想这样,你就需要决定每排固定的座位数,并根据循环索引计算它的位置。这就是为什么我想使用push。我可以吗?当然可以,只需将
arr[seat][row]=$(此)
更改为
arr[seat]。按($(此))
。虽然这不是直观的,但我会将顺序更改为
arr[row][seat]
。只需将第二维度的初始化器从
arr[seat]=[]
更改为
arr[seat]={}
,您可以使用它,但它在内部是不同的
circles = $("circle");//We get the circles
arr = []; //Initialize first dimension
circles.each(function() { //This makes the loop
  row = Number($(this).attr("row")); //attr is always a string, we make it a number
  seat = Number($(this).attr("seat"));
  if( typeof arr[seat] === "undefined") //Check if second dimension is initialized, if not, we do it
    arr[seat] = [] // Initializing
  arr[seat][row] = $(this) //Save object
});