在 TypeScript 裡,字串串列其實就是字串陣列(`string[]`),我們可以用以下幾種常見的方法來「新增」或「移除」特定字串。
一、新增字串到陣列
1.1 push()(就地改變原陣列)
```ts
let list: string[] = ['A', 'B'];
list.push('C'); // list 現在是 ['A','B','C']
```
1.2 展開運算子(不改變原陣列,回傳新陣列)
```ts
const list1: string[] = ['A','B'];
const list2 = [...list1, 'C'];
// list1 依舊是 ['A','B'],list2 是 ['A','B','C']
```
1.3 concat(不改變原陣列,回傳新陣列)
```ts
const listA = ['A','B'];
const listB = listA.concat('C');
// listA = ['A','B'],listB = ['A','B','C']
```
二、移除特定字串
2.1 使用 indexOf + splice(就地修改)
```ts
let fruits: string[] = ['apple','banana','cherry','banana'];
const target = 'banana';
// 找到第一個 banana 的索引
const idx = fruits.indexOf(target);
if (idx !== -1) {
fruits.splice(idx, 1);
// splice(索引, 刪除數量)
}
// 結果 fruits 可能變成 ['apple','cherry','banana']
```
2.2 使用 filter(回傳新陣列,可移除所有符合條件的項目)
```ts
const animals = ['cat','dog','fish','dog'];
const filtered = animals.filter(a => a !== 'dog');
// filtered = ['cat','fish']
// animals 不變
```
2.3 若只想移除第一個符合條件的資料,又不想就地改變原陣列,可以結合 slice:
```ts
function removeOne<T>(arr: T[], val: T): T[] {
const i = arr.indexOf(val);
if (i < 0) return arr.slice(); // 找不到就回傳淺拷貝
return [...arr.slice(0, i), ...arr.slice(i + 1)];
}
const nums = [1, 2, 3, 2, 4];
const result = removeOne(nums, 2);
// result = [1,3,2,4]
// nums 仍然是 [1,2,3,2,4]
```
總結:
- 要 **新增**,最快的是 `push`(會改原陣列),或用展開運算子/`concat`(回傳新陣列)。
- 要 **移除**,若要改原陣列可用 `indexOf + splice`;若想保留原陣列則用 `filter`(移除所有)或自行撰寫把 `slice` + 展開運算子結合的工具函式(移除第一個)。