从JQuery对象生成多维数组

时间:2017-02-08 18:17:09

标签: 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(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);
});

不能正常工作。

请指教。 感谢

row = $('circle').attr('rid');
seat = $('circle').attr('sid');

更多解释:

我有很多这种形式的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以我写的形式放入数组

1 个答案:

答案 0 :(得分:0)

首先你得到一个可以迭代的数组,然后你创建一个循环来将每个对象放在它的位置,但确保你不要试图在undefined内放置一些东西:

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]

一样使用它了