前言
JS數組slice方法是JS語言中最強大、最常用的內建函數之一。
隨著React和其他面向功能的JavaScript實踐的興起,它變得越來越重要,原因有兩個:
函數式編程,尤其是高階函數,與數據列表密切配合 函數式編程需要純函數,即不會產生副作用或修改輸入數據的函數JavaScript 數組slice方法符合這兩個標準。
slice方法可以在不修改原始列表的情況下創建列表子集的淺拷貝。因此,它為編寫函數式 JS 提供了一個關鍵的構建塊。
在這篇文章中,我們將通過實例來掌握slice方法,探索它的8種不同用法。
注意:slice 方法不要與splice方法混淆,splice方法會修改原始數組。
slice 工作原理
在深入研究一些更高級的用法之前,讓我們看一下slice方法的基礎知識。
如MDN文檔,slice 是數組上的一個方法,它最多有兩個參數:
arr.slice([begin[, end]])
begin
從該索引處開始提取原數組中的元素,如果該參數為負數,則表示從原數組中的倒數第幾個元素開始提取,slice(-2)表示提取原數組中的倒數第二個元素到最后一個元素(包含最后一個元素)。
如果省略 begin,則 slice 從索引 0 開始。
end
在該索引處結束提取原數組元素(從0開始)。slice會提取原數組中索引從 begin 到 end 的所有元素(包含begin,但不包含end)。
slice(1,4) 提取原數組中的第二個元素開始直到第四個元素的所有元素 (索引為 1, 2, 3的元素)。
如果該參數為負數, 則它表示在原數組中的倒數第幾個元素結束抽取。 slice(-2,-1)表示抽取了原數組中的倒數第二個元素到最后一個元素(不包含最后一個元素,也就是只有倒數第二個元素)。
如果 end 被省略,則slice 會一直提取到原數組末尾。如果 end 大于數組長度,slice 也會一直提取到原數組末尾。
基本用法
我們的前4個例子突出slice的核心功能。
用法1:簡單的復制
const arr2 = arr.slice
沒有任何參數的slice執行一個簡單的淺拷貝。當前,主流的用法還是使用展開運算符合來實現,但是如果在舊的代碼庫中,或者沒有使用babel的構建步驟,可能仍然希望使用slice。
用法2:獲取從 N 開始的子數組
使用slice方法最簡單的方法就是原始數組從N開始抽取的所有元素。
一種情況是希望彈出數組的第一個元素并使用它,返回剩余的數組,但希望在不修改原始數組的情況下執行此操作。
function useone (arr) { const usedItem = arr[0] return arr.slice(1)}用法3:獲取從末尾 N 開始的子數組
slice的另一種使用方法是獲取數組的末尾,利用的是負索引從末尾開始計數。
新聞熱點
疑難解答
圖片精選