当前位置:首 页 > 技术文章 > 原创 > 详细

javascript数组操作之移动数组元素

字号字号

摘要:偶然心血来潮,写了一个移动数组元素的方法,有无实际用途姑且不论,但是对数组加深理解还是有一定效用的,呵呵假设有数组["A","B","C","D","E","F","G&……

偶然心血来潮,写了一个移动数组元素的方法,有无实际用途姑且不论,但是对数组加深理解还是有一定效用的,呵呵

假设有数组["A","B","C","D","E","F","G","H","I","J","K","L"]

如果要将H移动到B的位置上,则BCDEFG依次向后移动一位,结果:

["A","H","B","C","D","E","F","G","I","J","K","L"]

如果要将B移动到H的位置上,则CDEFGH依次向前移动一位,结果:

["A","C","D","E","F","G","H","B","I","J","K","L"]

如图所示:

移动数组元素示意图

大致是这么个想法,还是看代码吧:

JavaScript Code复制内容到剪贴板
  1. //javascript数组操作:将n移动到m   
  2. Array.prototype.MovePos=function(n,m){   
  3.      
  4.   n=n<0?0:(n>this.length-1?this.length-1:n);   
  5.   m=m<0?0:(m>this.length-1?this.length-1:m);   
  6.      
  7.   if(n===m){   
  8.     return this;   
  9.   }   
  10.   else{   
  11.      if(n>m)//向前移动>对两个索引位置及其中间的元素重新赋值[顺推]   
  12.      {   
  13.         
  14.        var temp=[this[m],this[m]=this[n]][0];//交换n和m的值并将m上的值赋给temp   
  15.        for(var i=m+1; i<=n; i++)   
  16.        {   
  17.          temp=[this[i],this[i]=temp][0];   
  18.        }   
  19.           
  20.      }   
  21.      else{//向后移动>对两个索引位置及其中间的元素重新赋值[倒推]   
  22.         
  23.        var temp=[this[m],this[m]=this[n]][0];//交换n和m的值并将m上的值赋给temp   
  24.        for(var i=m-1; i>=n; i--)   
  25.        {   
  26.            temp=[this[i],this[i]=temp][0];   
  27.        }   
  28.           
  29.      }   
  30.      return this;   
  31.   }   
  32. };   
  33. /*测试*/    
  34. var arr=["A","B","C","D","E","F","G","H","I","J","K","L"];     
  35. alert(arr.MovePos(1,7));//将B移动到H的位置,C、D、E、F、G、H依次向前移动一位   
  36. alert(arr.MovePos(7,1));//还原   
  37. alert(arr.MovePos(7,1));//将H移动到B的位置,B、C、D、E、F、G依次向后移动一位  
这是留给你的位置,说出你的真知灼见吧![我要评论][我要收藏][我要举报]
[游客]于[2015-07-15]评论[javascript数组操作之移动数组元素]:

很不错

[游客]于[2014-05-23]评论[javascript数组操作之移动数组元素]:

对我这个新手挺有用的,赞一个

[游客]于[2013-12-18]评论[javascript数组操作之移动数组元素]:

“对两个索引位置及其中间的元素重新赋值”这一步很关键

[游客]于[2013-10-17]评论[javascript数组操作之移动数组元素]:

js数组操作,还不错,赞一个

[游客]于[2013-04-30]评论[javascript数组操作之移动数组元素]:

对数组加深理解确实还是有点效用,呵呵——对数组好像又多明白一点了!

[游客]于[2012-12-17]评论[javascript数组操作之移动数组元素]:

不错啊!可确实想不起哪里会用得到?^_^