Javascript,从前到后移动数组中的元素

Wil*_*ith 3 javascript

我有一个包含变量和函数的数组.该数组长80个元素.前20个元素在for循环中一起使用.循环完成后,前20个元素移动到数组的后面,for循环再次开始.

我正在以这种方式重建数组:

var a2=[the array with 80 elements];
run(a2);
function run(array){
  var n=array.slice(0,20); array.splice(0,20);
  var con=array.concat(n); a2=con;
  }
Run Code Online (Sandbox Code Playgroud)

所以我基本上索引(新)切片数组,在拼接后重新索引(原始)数组,在concat之后索引(新)数组,并在我将其设置为concat时再次重新索引原始数组.这看起来效率太低了.有没有更成熟的方法?

Tra*_*ty3 6

你不需要slice()然后splice().Splice() 返回已删除的元素,因此您只需要这样做:

var n = array.splice(0, 20);
a2 = array.concat(n);
Run Code Online (Sandbox Code Playgroud)

要完全清楚,JavaScript的splice()方法返回已删除的元素,而不是剩余的元素.

此外,使用全局变量通常是一个坏主意,但你也有点混合它们以一种奇怪的方式.如果你要保持变量全局,我会将原始的in作为参数传递并返回函数的结果:

var a2=[the array with 80 elements];
a2 = run(a2);

function run(array){
    var n = array.splice(0, 20);
    return array.concat(n);
}
Run Code Online (Sandbox Code Playgroud)

要么

根本不传递它,只是从一开始就引用全局:

var a2=[the array with 80 elements];
run();

function run(){
    var n = a2.splice(0, 20);
    a2 = a2.concat(n);
}
Run Code Online (Sandbox Code Playgroud)