一、了解數組切片
在 JavaScript 中,數組切片指從一個數組中抽取部分元素返回一個新的數組。通過數組切片,我們可以很方便地獲取想要的部分元素,甚至可以創建新的數組。數組切片有兩個常用的方法:slice()和splice()。
二、使用slice()方法
slice()方法用於從原始數組中返回一個目標數組,具體使用方式是:arrayObject.slice(start, end)。其中,start和end是兩個可選參數,start表示抽取的起始元素的下標,end表示終止位置的下標,但不包括該元素。如果不傳入任何參數,則返回原數組的一份拷貝。
let arr = [0, 1, 2, 3, 4, 5]; let newArr = arr.slice(1,4); console.log(newArr) //[1,2,3]
如果索引為負數,則表示從數組的倒數第幾個元素開始抽取。
let arr = [0, 1, 2, 3, 4, 5]; let newArr = arr.slice(-3,-1); console.log(newArr) //[3,4]
三、使用splice()方法
splice()方法用於從原始數組中刪除一個或多個元素或者插入一個或多個元素。具體使用方式是:arrayObject.splice(index,howmany,item1,…..,itemX)。其中,index 表示從哪個位置開始刪除/插入元素,howmany 表示需要刪除的元素個數,item1 到 itemX 表示需要插入的元素,如果沒有插入元素則省略。
let arr = [0, 1, 2, 3, 4, 5]; arr.splice(2, 2); console.log(arr) //[0,1,4,5]
如果 howmany 參數設置為 0,則可以實現數組中插入元素。
let arr = [0, 1, 2, 3, 4, 5]; arr.splice(2, 0, 'a', 'b'); console.log(arr) //[0,1,"a","b",2,3,4,5]
四、切片應用場景
通過數組切片,我們可以很方便地獲取想要的部分元素,從而可以減少循環次數,提高程序性能。
五、數組切片的性能優化
在使用數組切片時,也需要注意一些性能問題。為了提高性能,可以採用以下方式進行優化:
1. 避免在循環中重複調用 slice()方法
slice()方法每次調用都會創建一個新的數組。當數據量較大時,重複調用 slice()方法會消耗大量的內存和CPU資源。因此,可以將 slice()結果存儲在外部變量中,避免在循環中重複調用。
let arr = [0, 1, 2, 3, 4, 5]; let len = arr.length; let newArr = arr.slice(2, 4); for (let i = 0; i < len; i++) { console.log(newArr[i]); //每次循環直接使用 newarr[i],而不是 arr.slice(2,4)[i] }
2.使用原生的循環代替 forEach()方法
forEach()方法是循環數組元素最常用的方法之一,但它並不是最高效的方法。相較於使用原生循環,forEach()方法需要更多的 CPU 資源和內存。因此,可以考慮使用原生的循環代替 forEach()方法。
let arr = [0, 1, 2, 3, 4, 5]; let newArr = arr.slice(2, 4); for (let i = 0, len = newArr.length; i < len; i++) { console.log(newArr[i]); }
3.使用鏈式調用代替多次切片操作
如果需要對數組進行多次切片操作,則可以使用鏈式調用代替多次切片操作,這將減少內存和 CPU 的使用。例如:
let arr = [0, 1, 2, 3, 4, 5]; let newArr = arr.slice(2, 4).reverse().slice(1, 2); console.log(newArr) //[3]
六、總結
數組切片是一個很有用的工具,可以方便地獲取數組的部分元素,甚至可以創建新的數組。在使用數組切片時,需要注意以下幾點:
1.避免在循環中重複調用 slice()方法;
2.使用原生的循環代替 forEach()方法;
3.使用鏈式調用代替多次切片操作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/199522.html