元组是一种特殊的数组,元组种元素的类型可以不相同,数组中元素的类型必须相同。
相同点
元组和数组都支持索引,可以通过索引访问元素。
1 2 3 4 let 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 4 let 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 5 let 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 3 let arr_05 = [1, 2] arr_05.push(3) console.log(arr_05[2]) // 3
元组是不可变的,如果修改元组会导致创建新的元组副本。
1 2 3 4 let 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 ]