我有两个重要属性的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以我写的形式放入数组
答案 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]