更改数组中某个元素(索引)的顺序

时间:2013-09-16 22:41:15

标签: javascript jquery html css

我有一个通过push方法组合在一起的数组。推入阵列的元素取自不同的div。现在,数组按照它们在dom上的显示方式排序。我想更改某些元素的顺序,以便可以通过新排序的数组一次将一个类属性应用于一个新订单。

我将向您展示添加了一个类并移除了数组的JSFIDDLE。事情是我有这些父div通过使用浮动看起来像他们制作一个pic框架,其中儿童div可点击和内容出现在框架内。(未在jsfiddle中显示)

当添加的类出现在帧的右边部分的末尾时,它会到达底部行div的开头,这是帧的底部但是我希望它从最后一个div开始因此它继续像时钟一样穿过框架。我没有在jsfiddle中设置框架我只需要如何更改顺序,这样我就可以按顺序应用这些类。

现在是阵列

index :0 =prt1
index :1 =prt2
index :2 =prt3
index :3 =prt4
index :4 =prl5
index :5 =prl6
index :6 =prl7
index :7 =prl8
index :8 =prr9
index :9 =prr10
index :10 =prr11
index :11 =prr12
index :12 =prb13
index :13 =prb14
index :14 =prb15
index :15 =prb16

我希望数组的顺序为:

index :0 =prt1
index :1 =prt2
index :2 =prt3
index :3 =prt4 //top right corner
index :4 =prl5
index :5 =prl6
index :6 =prl7
index :7 =prl8 
index :11 =prr12 //botttom right corner the order has to change or the flashing div will    not follow the clock pattern
index :10 =prr11
index :9 =prr10
index :8 =prr9 //bottom left corner
index :15 =prb16
index :14 =prb15
index :13 =prb14
index :12 =prb13 

我需要上一堂课来改变数组中一组索引的顺序,这样我就可以将一个函数应用于这个新的顺序。谢谢。

2 个答案:

答案 0 :(得分:0)

我认为切片,反向和连接的组合在这里是最好的:

newArr = oldArr.slice(0,8).concat(oldArr.slice(8,4).reverse())
                                         .concat(oldArr.slice(12,4).reverse());

答案 1 :(得分:0)

听起来你知道你想要的确切顺序,并假设没有你可以创建的排序算法,以后会很有用,你可以像这样硬编码:

var desiredOrder = [0,1,2,3,4,5,6,7,11,10,9,8,15,14,13,12];
var orderedArray = [];
for(key in desiredOrder){
    orderedArray.push(existingArray[desiredOrder[key]]);
}
existingArray=orderedArray;