我有一个元素数组:markers
和一个表,用于更新它的行以填充markers
中存储的数据。 markers
本身包含一个物体marker
,其中包含纬度和经度。
当我使用markers
数组中的详细信息填充表格时,我会根据i
为每行提供一个ID,因为它会循环显示。
在这张桌子上我有jQuery可排序。我正在寻找一种方法来在每次排序行时重新排序markers
数组,这样数组中项目的位置实际上就是它的排序顺序值。这样,我可以随时循环遍历数组并查看它是最新的顺序。
到目前为止,我已经生成了应该生成的表,并填充了markers
数组。我甚至可以在将它们拖放到各处之后抢回行的顺序,此时我将它们存储在数组orders
中并且只是提醒,这是有效的(即。0,1,2>拖到度假村> 2,0,1)。我希望有一种方法可以使用orders
中的一组值来求助我原来的markers
数组。
我认为这将涉及创建一个临时数组markersTemp
,用于存储markers
中保存的值但是按新顺序存在,除了我不确定如何循环以保存每个。有人做过类似的事吗?
答案 0 :(得分:1)
function resort() {
var order = []; // Get the order of the new rows
$('#createMapDirections tbody tr').each(function(i, elem){
order.push(markers[getId($("td", elem))]);
});
markers = order;
updateAll();
}
旧程序:
order
order
markersTemp
order
i
中的order
位置获取ID
让markersTemp[i]
成为markers
中的元素(通过id
引用旧位置)markers
markers
设为markersTemp
优化
order
getId()
order
返回的索引引用
markers
覆盖order
。答案 1 :(得分:0)
我不会说完全结束了。我很想知道这是否是最有效/最有效的方法。我知道有一个内置于javascript中的数组.sort()函数,可以使用吗?
function resort() {
var order = new Array(); // Get the order of the new rows
for (var i = 0; i < markers.length; i++) {
order.push(getId($('#createMapDirections tbody tr').eq(i).find('td')));
}
var markersTemp = new Array();
for (var i = 0; i < markers.length; i++) {
var id = order[i];
markersTemp[i] = markers[id];
}
markers.length = 0;
markers = markersTemp.slice();
updateAll();
}
修改强>
好的,所以我在页面上的表格如下:
<table><tbody>
<tr id="row0"><td></td></tr>
<tr id="row1"><td></td></tr>
<tr id="row2"><td></td></tr>
</tbody></table>
getId()只是抓取TR的id并运行一点regex来获取该数字。当它们被使用时,顺序可能类似于:row2,row0,row1。我将此订单存储在orders
(临时数组)中,并使用值markersTemp
填充markersTemp
(另一个临时数组),但是按新顺序填充。
function getId(button) {
return $(button).parents('tr').attr('id').replace(new RegExp('\[A-Za-z]+'), '');
}