元组是一种特殊的数组,元组种元素的类型可以不相同,数组中元素的类型必须相同。
相同点
- 元组和数组都支持索引,可以通过索引访问元素。
1
2
3
4let arr_06: number[] = [1, 2]
console.log(arr_06[0]) // 1
let tuple_03: [string, number] = [ '小红', 29 ]
console.log(tuple_03[0]) // 小红 - 元组和数组都有一个名为
length的长度属性,可以用来获取当前元素的个数。1
2
3
4let arr_06: number[] = [1, 2]
console.log(arr_06.length) // 2
let tuple_03: [string, number] = [ '小红', 29 ]
console.log(tuple_03.length) // 2
不同点
定义
- 数组是一种数据结构,用于存储一系列相同类型的元素。它可以容纳多个值,并通过索引来访问和操作这些值。
1
2
3
4
5let arr_01: number[] = [1, 2, 3]
let arr_02: Array<string> = [ 'a', 'b', 'c' ]
// 固定数组的长度
let arr_03: Array<number> = new Array(3)
let arr_04 = new Array<number>(3) - 元组类型是另一种数组类型(可以简单理解为元组是数组的变种),它确切地知道它包含多少个元素,以及它在特定位置包含哪些类型。
1
let tuple_01: [ string, number ] = [ '小翠', 18 ]
可变性
- 数组是可变的,可以直接修改数组的现有元素。
1
2
3let arr_05 = [1, 2]
arr_05.push(3)
console.log(arr_05[2]) // 3 - 元组是不可变的,如果修改元组会导致创建新的元组副本。
1
2
3
4let tuple_02: [ string, number ] = [ '小红', 29 ]
tuple_02.push('女')
// 长度为 "2" 的元组类型 "[string, number]" 在索引 "2" 处没有元素。
console.log(tuple_02[2])
性能
- 数组的每次修改都需要重新分配内存,这可能导致性能上的开销。
- 由于元组是不可变的,它们可能在某些情况下被视为性能更优的选择,尤其是在频繁的迭代和修改操作时。
用途
- 数组则常用于存储一组相同类型的数据,以及进行数学计算和数据处理。
1
2// 必须全部是number类型;
let arr_01: number[] = [1, 2, 3] - 元组通常用于存储不同类型的数据,或者作为函数的参数,因为它可以安全地传递给函数并保持不变。
1
2// [ 姓名, 年龄 ]
let tuple_01: [ string, number ] = [ '小翠', 18 ]