目次
1. 介紹
JavaScript 是現代網頁開發中最重要的程式語言之一。於其眾多功能之中,slice 方法 在處理陣列與字串時提供了極為實用的功能。本文將從基礎到進階完整說明 slice 方法,協助新手與中階使用者全面掌握。
為什麼 slice 方法很重要?
JavaScript 常需要對資料進行操作。例如,你可能需要「只抽取特定資料」或「只處理陣列的一部份」。 slice 方法正是為此類情境而設計。 主要特點:
- 在不修改原始資料的情況下抽取部分值。
- 不只適用於陣列,也可用於字串。
文章目標與結構
本文將一步步說明以下主題:
slice方法的基本用法- 陣列與字串的實作範例
- 與其他方法(
splice與split)的比較 - 真實案例應用
- 常見錯誤與除錯方式
- 實務最佳實踐,讓程式碼更乾淨
透過逐層深入的學習,你將獲得可直接運用的實務技能。
接下來的章節,我們先來看看 slice 方法的基本語法與使用方式。
2. slice 方法是什麼?【基本語法與使用】
JavaScript 的 slice 方法會在指定範圍內從陣列或字串中抽取元素,並以新陣列或新字串回傳。本節將詳細說明 slice 的基本語法與使用方式。
slice 的基本語法
array.slice(start, end)
參數說明:
- start(必填):抽取開始的索引(從 0 計算)。
- end(可選):抽取結束的索引(此索引的元素不會被包含)。
回傳值
會回傳一個新陣列或新字串,原始陣列或字串不會被修改。

3. 與其他方法的比較|slice vs splice vs split
slice 與 splice 的差異
| Feature | slice | splice |
|---|---|---|
| Operation Style | Extracts part of an array and returns a new array | Modifies the array directly: delete, add, replace |
| Original Array | Not modified | Modified |
| Return Value | New array containing extracted elements | Array of deleted elements |
| Use Cases | Copying or extracting data | Editing data (add/delete/replace) |
範例:使用 slice
const arr = [1, 2, 3, 4, 5];
const result = arr.slice(1, 4);
console.log(result); // [2, 3, 4]
console.log(arr); // [1, 2, 3, 4, 5] (original array unchanged)
4. 實務應用案例|slice 的有用應用
複製陣列
const original = [1, 2, 3, 4, 5];
const copy = original.slice();
console.log(copy); // [1, 2, 3, 4, 5]
console.log(original); // [1, 2, 3, 4, 5]
console.log(copy === original); // false (different objects)
分頁處理
const items = ["商品1", "商品2", "商品3", "商品4", "商品5", "商品6"];
const itemsPerPage = 2;
function getPage(pageNumber) {
const start = (pageNumber - 1) * itemsPerPage;
const end = start + itemsPerPage;
return items.slice(start, end);
}
console.log(getPage(1)); // ["商品1", "商品2"]
console.log(getPage(2)); // ["商品3", "商品4"]
5. 常見錯誤與解決方式【除錯】
錯誤 1:指定了超出範圍的索引
const arr = [1, 2, 3, 4, 5];
const result = arr.slice(10, 15);
console.log(result); // []
解決方案:
const arr = [1, 2, 3, 4, 5];
const start = 10;
const end = 15;
if (start < arr.length) {
const result = arr.slice(start, end);
console.log(result);
} else {
console.log([]);
}
錯誤 2:負索引的混淆
const arr = [1, 2, 3, 4, 5];
console.log(arr.slice(-1, -3)); // []
解決方案:
const arr = [1, 2, 3, 4, 5];
const result = arr.slice(-3, -1);
console.log(result); // [3, 4]
6. 效能與最佳實踐
大資料集的處理負載
const largeArray = Array(1000000).fill(0);
const result = largeArray.slice(0, 500000);
重點說明:
- 複製大型資料集可能會消耗大量時間與記憶體。
- 請將資料範圍限制在最小必要範圍,並減少操作頻率。
複製巢狀資料結構
const nestedArray = [[1, 2], [3, 4]];
const shallowCopy = nestedArray.slice();
shallowCopy[0][0] = 99;
console.log(nestedArray); // [[99, 2], [3, 4]]
解決方案:
使用以下方法來建立深層拷貝:
const deepCopy = JSON.parse(JSON.stringify(nestedArray));
deepCopy[0][0] = 99;
console.log(nestedArray); // [[1, 2], [3, 4]]
最佳實踐
撰寫可讀性高的程式碼
const arr = [1, 2, 3, 4, 5];
const startIndex = 1;
const endIndex = 4;
const result = arr.slice(startIndex, endIndex);
console.log(result); // [2, 3, 4]
建立可重複使用的函式
function paginate(array, pageSize, pageNumber) {
const start = (pageNumber - 1) * pageSize;
const end = start + pageSize;
return array.slice(start, end);
}
const items = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(paginate(items, 3, 2)); // [4, 5, 6]

7. 小結|精通 slice 方法
slice 方法的重點
- 基本語法與特性
- 語法:
array.slice(start, end) - 非破壞性方法,不會修改原始陣列或字串。
- 使用情境與實務範例
- 可用於陣列複製、分頁,以及擷取最新資料。
- 了解與其他方法的差異,能協助你選擇最適合的工具。
- 重要注意事項與最佳實踐
- 處理大型資料集時,請優化操作效能。
- 了解淺層拷貝與深層拷貝的差異,並依需求選擇。
- 透過建立函式提升程式碼的可讀性與可重用性。
後續步驟
- 學習其他陣列操作方法(
map、filter、reduce)。 - 嘗試在 React 或 Vue.js 等框架中使用
slice。 - 探索大型資料集的效能優化技巧。
以上即為 JavaScript slice 方法的說明。
持續以實際程式碼練習,並不斷提升你的開發技能。
広告


