ids = ["s1","s2","s3","s4","s5","s6","s7","s8","s9","s10"]
我想通过一些方法对这个数组的元素进行任意的排序例如把 ids[1]---ds[3] 放置与 ids[4] 的后面,得到结果如下
ids = ["s1","s5","s2","s3","s4","s6","s7","s8","s9","s10"]请问有什么好的方法?
我想通过一些方法对这个数组的元素进行任意的排序例如把 ids[1]---ds[3] 放置与 ids[4] 的后面,得到结果如下
ids = ["s1","s5","s2","s3","s4","s6","s7","s8","s9","s10"]请问有什么好的方法?
请大家看看这思路有没有不妥的地方。
红色文字部分为数组重组
var rowList = ["s1","s2","s3","s4","s5","s6","s7","s8","s9","s10"]
rowList=rowList== null?(parentgrid.getAllRowIds()).split(","):rowList;//设置全局行ID列表值;
var newIdsArr = new Array();
var target = this.action=="up"? parseInt(this.result.target.index)-1:parseInt(this.result.target.index);
var beginIndex = parseInt(this.result.source.index) -1;//开始索引[grid.rowid = dom索引 -1]
var rowspanval = parseInt(this.result.source.rowspan);//合并行数
var endIndex = rowspanval + beginIndex;
var idsArr = rowList;
for(var i=0; i< idsArr.length; i++)
{
if(i==target)
{
for(var n=beginIndex; n<endIndex; n++ )
{
newIdsArr.push(idsArr[n]);
}
}
if(i < beginIndex || i> endIndex-1) {
newIdsArr.push(idsArr[i]);
}
}
rowList = newIdsArr;
var ids = ["s1","s2","s3","s4","s5","s6","s7","s8","s9","s10"];
// 编写排序规则
function mm(a, b){
var a1 = +(a.substr(1));
a1 == 5 && (a1 = 1.5); var b1 = +(b.substr(1));
b1 == 5 && (b1 = 1.5); return a1 > b1 ? 1 : (a1 < b1 ? -1 : 0);
}
ids.sort(mm);
alert(ids);
elemNum = elemNum || 1;
var arrbuf = this.splice(oIndex, elemNum);
this.splice(tIndex, 0 , arrbuf);
}
var arr = [0,1,2,3,4,5,6,7,8,9];
arr.transsituation(1, 3, 2);
alert(arr);
第一个参数是要移动的元素的起始位置,第二个参数是要移动的目标位置,都是从0开始计算,第三个元素是要移动的元素个数(可选,默认为1)