#相關免費學習推薦:javascript(影片)
在本教學中,我們來學習如何使用Array.splice()
方法將陣列等分,還會講一下,Array.splice()
和Array.slice()
它們之間的差異。
我們可以分兩步驟將陣列分成兩半:
使用 length/2
和Math.ceil()
方法找到陣列的中間索引
使用中間索引和Array.splice()
方法獲得陣列等分的部分
Math.ceil() 函數傳回大於或等於一個給定數字的最小整數。
const list = [1, 2, 3, 4, 5, 6]; const middleIndex = Math.ceil(list.length / 2); const firstHalf = list.splice(0, middleIndex); const secondHalf = list.splice(-middleIndex); console.log(firstHalf); // [1, 2, 3] console.log(secondHalf); // [4, 5, 6] console.log(list); // []
Array.splice()
方法透過刪除,替換或新增元素來更改陣列的內容。而Array.slice()
方法會先對陣列一份拷貝,在操作。
list.splice(0, middleIndex)
從陣列的0
索引處刪除前3
個元素,並將其返回。 splice(-middleIndex)
從陣列中刪除最後3
個元素並傳回它。 在這兩個操作結束時,由於我們已經從陣列中刪除了所有元素,所以原始陣列是空的。
另請注意,在上述情況下,元素數為偶數,如果元素數為奇數,則前一半將有一個額外的元素。
const list = [1, 2, 3, 4, 5]; const middleIndex = Math.ceil(list.length / 2); list.splice(0, middleIndex); // returns [1, 2, 3] list.splice(-middleIndex); // returns [4, 5]
有時我們不希望改變原始數組,這個可以配合Array.slice() 來解決這個問題:
const list = [1, 2, 3, 4, 5, 6]; const middleIndex = Math.ceil(list.length / 2); const firstHalf = list.slice().splice(0, middleIndex); const secondHalf = list.slice().splice(-middleIndex); console.log(firstHalf); // [1, 2, 3] console.log(secondHalf); // [4, 5, 6] console.log(list); // [1, 2, 3, 4, 5, 6];
我們看到原始陣列保持不變,因為在使用Array.slice()
刪除元素之前,我們使用Array.slice()
複製了原始陣列。
const list = [1, 2, 3, 4, 5, 6, 7, 8, 9]; const threePartIndex = Math.ceil(list.length / 3); const thirdPart = list.splice(-threePartIndex); const secondPart = list.splice(-threePartIndex); const firstPart = list; console.log(firstPart); // [1, 2, 3] console.log(secondPart); // [4, 5, 6] console.log(thirdPart); // [7, 8, 9]
簡單解釋一下上面做了啥:
首先使用st.splice( -threePartIndex)
提取了ThirdPart,它刪除了最後3個元素[7、8、9]
,此時list
僅包含前6個元素[ 1、2、3、4、5、6]
。
接著,使用list.splice(-threePartIndex)
提取了第二部分,它從剩餘list = [1、2、3、4 、5、6]
(即[4、5、6])中刪除了最後3個元素,list只包含前三個元素[1、2、3]
,即firstPart
。
#現在,我們來看看Array.splice() 更多用法,這裡因為我不想改變原數組,所以使用了Array.slice(),如果智米們想改變原始數組可以進行刪除它。
const list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
取得陣列的第一個元素
list.slice().splice(0, 1) // [1]
#取得陣列的前5個元素
list.slice().splice(0, 5) // [1, 2, 3, 4, 5]
#取得數組前5個元素之後的所有元素
list.slice().splice(5) // 6, 7, 8, 9]
取得陣列的最後一個元素
list.slice().splice(-1) // [9]
#取得陣列的最後三個元素
list.slice().splice(-3) // [7, 8, 9]
程式碼部署後可能存在的BUG沒辦法即時知道,事後為了解決這些BUG,花了大量的時間進行log 調試,這邊順便給大家推荐一個好用的BUG監控工具Fundebug。
以上是JavaScript 實作等分數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!