簡體   English   中英

將最后一個元素移到數組中第二個項目的最快方法

[英]Fastest way to move the last element to second item in the array

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

是否有最快的方法將項目移到數組頂部?

因此,最終結果應為arrayData = ['abc', 'dfg' , 'bcd', 'cdf' ]

從數組末尾移動到第二個位置最簡單的方法是:

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

splice接受兩個固定的參數,即從索引處開始和要刪除的元素數量,然后是要在相同位置插入的元素的可變參數。 因此,此操作從索引1開始,刪除0個元素,然后插入從結尾彈出的元素。 我不能保證它總是最快的(實現可能因瀏覽器而異),但是它避免構造任何中間數組,並且盡可能地顯式/直接。

如果目標是從頭到尾(您的問題描述說到“頂”),那么它甚至更簡單:

arrayData.unshift(arrayData.pop())

您只需從右側彈出,然后將結果值“移”到左側即可。

如果使用unshift或splic等本機方法,它將重建整個數組。 最快的方法是使用臨時變量切換必要的值。 這樣操作將是O(1)->恆定時間,而不是O(N)->線性時間。

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

使用Array對象的splice方法,我想您的問題已經得到解答。 關於stackoverflow,請參見: 如何在特定索引處將項目插入數組? 有關更多詳細信息和示例,請參見: http : //ariya.ofilabs.com/2014/02/javascript-array-slice-vs-splice.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM