将最后一个元素移动到数组中第二个项目的最快方法

时间:2016-02-23 02:14:06

标签: javascript

我有arrayData = ['abc', 'bcd', 'cdf', 'dfg']

的数组

是否有最快的方法将项目移动到数组的顶部?

所以最终结果应该是arrayData = ['abc', 'dfg' , 'bcd', 'cdf' ]

3 个答案:

答案 0 :(得分:2)

最简单的从数组末尾移动到第二个位置是:

arrayData.splice(1, 0, arrayData.pop())

splice有两个固定的参数,即开始的索引和要删除的元素的数量,然后是要在同一位置插入的元素的变量参数。所以这从索引1开始,删除0个元素,并插入从末尾弹出的元素。我不能发誓它总是最快(实现可能很容易因浏览器而异),但它避免构造任何中间数组,并且尽可能明确/直接。

如果目标是从头到尾(你的问题描述说移到“顶部”),那么它甚至更简单:

arrayData.unshift(arrayData.pop())

您只需弹出右侧,并将结果值“取消”移到左侧。

答案 1 :(得分:2)

如果使用unshift或splice等本机方法,它将重建整个数组。最快的方法是使用临时变量切换必要的值。这样操作将是O(1) - >恒定时间,而不是O(N) - >线性时间。

var temp = arrayData[0];
arrayData[0] = arrayData[arrayData.length -1];
arrayData[arrayData.length -1] = temp;

答案 2 :(得分:0)

使用Array对象的splice方法,我想你的问题已经得到解答了。 在stackoverflow上看到: How to insert an item into an array at a specific index? 有关详细信息和示例,请参阅: http://ariya.ofilabs.com/2014/02/javascript-array-slice-vs-splice.html