在TypeScript中,数组是一种常用的数据结构,用于存储有序的元素集合。它继承了JavaScript中的数组功能,并提供了静态类型的支持。
数组的基本操作方法
创建数组
- 显式声明类型
let numbers: number[] = [1, 2, 3, 4];
let strings: string[] = ['apple', 'banana', 'cherry'];
- 泛型语法
let mixedArray: Array<number | string> = [1, 'apple', 2, 'banana'];
数组的常用方法分类
| 操作类别 | 常用方法 |
|---|---|
| 添加与删除 | push, pop, unshift, shift, splice |
| 查找与判断 | indexOf, lastIndexOf, includes, find, findIndex |
| 遍历与转换 | forEach, map, filter, reduce |
| 排序与反转 | sort, reverse |
| 合并与分割 | concat, slice, join, split |
1. 添加与删除操作
push 和 pop
push:向数组末尾添加元素,并返回新长度。pop:移除数组末尾的元素,并返回被移除的元素。
let fruits: string[] = ['apple', 'banana'];
fruits.push('cherry'); // ['apple', 'banana', 'cherry']
let removedFruit = fruits.pop(); // ['apple', 'banana'], 返回值: 'cherry'
unshift 和 shift
unshift:向数组开头添加元素,并返回新长度。shift:移除数组开头的元素,并返回被移除的元素。
let numbers: number[] = [2, 3, 4];
numbers.unshift(1); // [1, 2, 3, 4]
let firstNumber = numbers.shift(); // [2, 3, 4], 返回值: 1
splice
- 用于在数组中添加、删除或替换元素。
let colors: string[] = ['red', 'green', 'blue'];
colors.splice(1, 1, 'yellow'); // ['red', 'yellow', 'blue']
colors.splice(2, 0, 'purple'); // ['red', 'yellow', 'purple', 'blue']
2. 查找与判断操作
indexOf 和 lastIndexOf
indexOf:查找元素的第一个匹配索引。lastIndexOf:查找元素的最后一个匹配索引。
let numbers: number[] = [1, 2, 3, 2, 4];
numbers.indexOf(2); // 返回: 1
numbers.lastIndexOf(2); // 返回: 3
includes
- 判断数组是否包含某个元素,返回布尔值。
let items: string[] = ['apple', 'banana', 'cherry'];
items.includes('banana'); // 返回: true
items.includes('grape'); // 返回: false
find 和 findIndex
find:查找第一个满足条件的元素。findIndex:查找第一个满足条件的元素索引。
let users = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }];
let user = users.find(u => u.id === 2); // 返回: { id: 2, name: 'Bob' }
let userIndex = users.findIndex(u => u.name === 'Alice'); // 返回: 0
3. 遍历与转换操作
forEach
- 遍历数组,执行回调函数(不返回新数组)。
let names: string[] = ['Alice', 'Bob', 'Charlie'];
names.forEach(name => console.log(name));
map
- 遍历数组,生成一个新数组。
let numbers: number[] = [1, 2, 3];
let squared = numbers.map(num => num ** 2); // [1, 4, 9]
filter
- 返回满足条件的元素组成的新数组。
let numbers: number[] = [1, 2, 3, 4];
let evens = numbers.filter(num => num % 2 === 0); // [2, 4]
reduce
- 为数组中的所有元素调用指定的回调函数。回调函数的返回值是累积的结果。
let numbers: number[] = [1, 2, 3, 4];
let sum = numbers.reduce((acc, num) => acc + num); // 返回: 10
4. 排序与反转操作
sort
- 按指定规则排序数组。
let numbers: number[] = [4, 1, 3, 2];
numbers.sort((a, b) => a - b); // [1, 2, 3, 4]
reverse
- 反转数组顺序。
let numbers: number[] = [1, 2, 3];
numbers.reverse(); // [3, 2, 1]
5. 合并与分割操作
concat
- 合并两个或多个数组,生成新数组。
let arr1 = [1, 2];
let arr2 = [3, 4];
let result = arr1.concat(arr2); // [1, 2, 3, 4]
slice
- 截取数组的一部分,生成新数组。
let numbers: number[] = [1, 2, 3, 4];
let sliced = numbers.slice(1, 3); // [2, 3]
join
- 将数组元素拼接成字符串。
let words: string[] = ['Hello', 'World'];
let sentence = words.join(' '); // 'Hello World'
凡是过去,皆为序章;凡是未来,皆有可期。

3030

被折叠的 条评论
为什么被折叠?



