碎片時間學編程「351]:快速刪除無序 JavaScript 數(shù)組中的元素

Array.prototype.splice() 是從數(shù)組中刪除元素的最常用方法。但事實證明這并不是最快的。如果您要使用大型數(shù)組執(zhí)行許多操作,這可能是影響代碼性能的一個特別重要的因素。 您可以使用一個非常簡單的技巧來加速此操作,但數(shù)組中元素的順序不能對其起作用。如果后者為真,則可以毫無問題地交換數(shù)組中的兩個元素。例如,這意味著您可以將任何元素與最后一個元素交換。但是使用 Array.prototype.pop() 刪除最后一個元素既簡單又快速,因此您可以利用它來發(fā)揮自己的優(yōu)勢。例如:
const arr = [3, 1, 5, 7, 9]; ?// Want to remove 5 (index: 2)arr[2] = arr[arr.length -1]; ?// Copy last element to 3rd placearr.pop(); ? ? ? ? ? ? ? ? ? ?// Remove the last element
在此示例中,我們要刪除數(shù)組中間的一個元素。我們首先將要刪除的元素與最后一個元素進行交換。但是,我們不需要實際交換它們。我們需要做的就是確保最后一個元素位于我們要刪除的元素的位置。我們可以簡單地將其復制到該位置,然后使用 Array.prototype.pop() 刪除最后一個元素。 順便說一句,人們可能會認為將其縮短為 arr[i] = arr.pop() 會讓它變得更簡潔。事實證明情況并非如此,因為如果我們嘗試刪除數(shù)組中的最后一個元素,這個較短的版本將會失敗。
更多內容請訪問我的網站:https://www.icoderoad.com
標簽: