TypeScript 数组详解与实战技巧(九)
- 编程语言
- 5天前
- 9热度
- 0评论
数组是编程中非常基础且重要的数据结构,尤其在 TypeScript 中,数组的类型安全性和灵活性使其成为处理大量数据的理想选择。本文将详细介绍 TypeScript 中数组的基本概念、声明方式、常见操作以及一些高级用法,帮助你更好地理解和使用数组。
什么是数组?
数组是一种用于存储多个值的数据结构,这些值可以通过一个单独的变量名进行访问。在 TypeScript 中,数组可以存储相同类型的值,也可以存储不同类型的值。数组的每个元素都有一个索引,索引从 0 开始,通过索引可以快速访问和修改数组中的元素。
声明和初始化数组
在 TypeScript 中,声明和初始化数组有多种方式。以下是几种常见的方法:
1. 直接声明和初始化
let sites: string[] = ["Google", "Runoob", "Taobao"];在这个例子中,我们声明了一个 string 类型的数组 sites,并在声明时直接初始化了它的值。
2. 分步声明和初始化
let nums: number[];
nums = [1, 2, 3, 4];这里,我们先声明了一个 number 类型的数组 nums,然后在后续的代码中初始化了它的值。
3. 使用 Array 构造函数
let sites: string[] = new Array("Google", "Runoob", "Taobao");使用 Array 构造函数可以创建一个数组,并在创建时初始化其值。这种方式在某些情况下更加灵活。
4. 动态类型数组
如果数组中的元素类型不确定,可以使用 any 类型:
let mixed: any[] = [1, "hello", true];这种方式虽然灵活,但在类型安全方面不如显式指定类型。
访问和修改数组元素
数组的每个元素都有一个索引,索引从 0 开始。通过索引可以访问和修改数组中的元素。
访问数组元素
let sites: string[] = ["Google", "Runoob", "Taobao"];
console.log(sites[0]); // 输出 "Google"
console.log(sites[1]); // 输出 "Runoob"修改数组元素
let nums: number[] = [1, 2, 3, 4];
nums[1] = 10;
console.log(nums); // 输出 [1, 10, 3, 4]数组解构
数组解构是一种将数组中的元素赋值给变量的便捷方式。通过解构,可以一次性获取多个数组元素。
let arr: number[] = [12, 13];
let [x, y] = arr;
console.log(x); // 输出 12
console.log(y); // 输出 13数组迭代
使用 for 循环可以遍历数组中的每个元素。TypeScript 提供了多种循环结构,包括传统的 for 循环、for...of 循环和 forEach 方法。
传统 for 循环
let nums: number[] = [1001, 1002, 1003, 1004];
for (let i = 0; i < nums.length; i++) {
console.log(nums[i]);
}for...of 循环
let nums: number[] = [1001, 1002, 1003, 1004];
for (let num of nums) {
console.log(num);
}forEach 方法
let nums: number[] = [1001, 1002, 1003, 1004];
nums.forEach((num) => {
console.log(num);
});多维数组
多维数组是指数组的元素本身也是数组。最常见的是二维数组,即数组的每个元素都是一个一维数组。
定义和访问二维数组
let multi: number[][] = [
[1, 2, 3],
[23, 24, 25]
];
console.log(multi[0][0]); // 输出 1
console.log(multi[0][1]); // 输出 2
console.log(multi[0][2]); // 输出 3
console.log(multi[1][0]); // 输出 23
console.log(multi[1][1]); // 输出 24
console.log(multi[1][2]); // 输出 25数组在函数中的使用
数组可以作为函数的参数传递,也可以作为函数的返回值。
作为参数传递
let sites: string[] = ["Google", "Runoob", "Taobao", "Facebook"];
function disp(arr_sites: string[]) {
for (let i = 0; i < arr_sites.length; i++) {
console.log(arr_sites[i]);
}
}
disp(sites);作为返回值
function disp(): string[] {
return ["Google", "Runoob", "Taobao", "Facebook"];
}
let sites: string[] = disp();
for (let i in sites) {
console.log(sites[i]);
}常用数组方法
TypeScript 提供了许多内置的数组方法,这些方法可以帮助你高效地操作数组。以下是一些常用的数组方法及其示例:
1. concat() 连接数组
let alpha = ["a", "b", "c"];
let numeric = [1, 2, 3];
let alphaNumeric = alpha.concat(numeric);
console.log(alphaNumeric); // 输出 ["a", "b", "c", 1, 2, 3]2. every() 检测每个元素是否符合条件
function isBigEnough(element: number): boolean {
return element >= 10;
}
let passed = [12, 5, 8, 130, 44].every(isBigEnough);
console.log(passed); // 输出 false3. filter() 返回符合条件的元素
function isBigEnough(element: number): boolean {
return element >= 10;
}
let passed = [12, 5, 8, 130, 44].filter(isBigEnough);
console.log(passed); // 输出 [12, 130, 44]4. forEach() 遍历数组
let num = [7, 8, 9];
num.forEach((value) => {
console.log(value);
});
// 输出 7 8 95. indexOf() 查找元素索引
let index = [12, 5, 8, 130, 44].indexOf(8);
console.log(index); // 输出 26. join() 将数组转换为字符串
let arr = ["Google", "Runoob", "Taobao"];
let str = arr.join();
console.log(str); // 输出 "Google,Runoob,Taobao"
let strWithSpaces = arr.join(", ");
console.log(strWithSpaces); // 输出 "Google, Runoob, Taobao"7. lastIndexOf() 查找元素最后一次出现的索引
let index = [12, 5, 8, 130, 44].lastIndexOf(8);
console.log(index); // 输出 28. map() 映射数组元素
let numbers = [1, 4, 9];
let roots = numbers.map(Math.sqrt);
console.log(roots); // 输出 [1, 2, 3]9. pop() 删除最后一个元素
let numbers = [1, 4, 9];
let element = numbers.pop();
console.log(element); // 输出 9
console.log(numbers); // 输出 [1, 4]10. push() 添加元素
let numbers = [1, 4, 9];
let length = numbers.push(10);
console.log(numbers); // 输出 [1, 4, 9, 10]
length = numbers.push(20);
console.log(numbers); // 输出 [1, 4, 9, 10, 20]11. reduce() 累加数组元素
let total = [0, 1, 2, 3].reduce((a, b) => a + b);
console.log(total); // 输出 612. reduceRight() 从右到左累加数组元素
let total = [0, 1, 2, 3].reduceRight((a, b) => a + b);
console.log(total); // 输出 613. reverse() 反转数组
let arr = [0, 1, 2, 3].reverse();
console.log(arr); // 输出 [3, 2, 1, 0]14. shift() 删除第一个元素
let arr = [10, 1, 2, 3].shift();
console.log(arr); // 输出 1015. slice() 截取数组
let arr = ["orange", "mango", "banana", "sugar", "tea"];
let slicedArr = arr.slice(1, 3);
console.log(slicedArr); // 输出 ["mango", "banana"]总结
通过本文,我们详细介绍了 TypeScript 中数组的基本概念、声明方式、常见操作以及一些高级用法。数组是处理集合数据的强大工具,掌握这些知识将帮助你在日常开发中更加高效地使用 TypeScript。希望本文对你有所帮助,如果你有任何疑问或建议,欢迎在评论区留言交流。