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"]请问有什么好的方法?

解决方案 »

  1.   

    你的任意也太任意了吧,只能针对每一种模式编个程序http://www.w3school.com.cn/js/jsref_obj_array.asp
      

  2.   

    自己搞掂,贴出主要代码?
    请大家看看这思路有没有不妥的地方。
    红色文字部分为数组重组
    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;

      

  3.   


    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);
      

  4.   

    Array.prototype.transsituation = function(oIndex, tIndex, elemNum){
    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)