# 数组

一个随机访问的通用类型值序列。

Array API 非常类似于 JavaScript 的 (MDN (在新窗口中打开)), 最显著的区别是,如果 T 是一个非空引用类型,则必须确保没有 null 值。示例

var arr = new Array<string>(10)
// arr[0]; // would error 😢
for (let i = 0; i < arr.length; ++i) {
  arr[i] = ""
}
arr[0]; // now it works 😊

# 构造函数

  • new Array<T>(capacity?: i32)
    
    构造一个新的数组。

# 静态成员

  • function isArray<U>(value: U): bool
    
    测试一个值是否为数组。

# 实例成员

# 字段

  • var length: i32
    
    此数组的长度。将长度设置为大于内部容量的值会自动扩展数组。

# 方法

  • function concat(other: Array<T>): Array<T>
    

    将此数组和另一个数组的值连接到一个新数组,按此顺序排列。

  • function copyWithin(target: i32, start: i32, end?: i32): this
    

    将数组的值从源位置复制到目标位置。

  • function every(fn: (value: T, index: i32, self: Array<T>) => bool): bool
    

    对数组中的每个值调用指定函数,直到找到第一个函数返回 false 的值。如果所有函数都返回 true 或数组为空,则返回 true,否则返回 false

  • function fill(value: T, start?: i32, end?: i32): this
    

    用指定的值替换数组从 start 包含到 end 独占的值,返回数组。

  • function filter(fn: (value: T, index: i32, self: Array<T>) => bool): Array<T>
    

    对数组中的每个值调用指定函数,返回一个包含所有函数返回 true 的值的数组。

  • function findIndex(fn: (value: T, index: i32, self: Array<T>) => bool): i32
    

    对数组中的每个值调用指定函数,直到找到第一个函数返回 true 的值,返回其索引。如果永远不会出现这种情况,则返回 -1

  • function findLastIndex(fn: (value: T, index: i32, self: Array<T>) => bool): i32;
    

    从末尾开始对数组中的每个值调用指定函数,直到找到第一个函数返回 true 的值,返回其索引。如果永远不会出现这种情况,则返回 -1

  • function flat(): valueof<T>[]
    

    将数组的数组展平成一维数组。忽略 null 条目。

  • function forEach(fn: (value: T, index: i32, self: Array<T>) => void): void
    

    对数组中的每个值调用指定函数。

  • function includes(value: T, fromIndex?: i32): bool
    

    测试数组是否包含指定值,可选地提供起始索引。

  • function indexOf(value: T, fromIndex?: i32): i32
    

    获取在数组中找到指定值的第一个索引。如果未找到,则返回 -1

  • function join(separator?: string): string
    

    将数组的所有值连接成一个字符串,用指定的分割符(默认:,)隔开。

  • function lastIndexOf(value: T, fromIndex?: i32): i32
    

    获取在数组中找到指定值的最后一个索引。如果未找到,则返回 -1

  • function map<U>(fn: (value: T, index: i32, self: Array<T>) => U): Array<U>
    

    对数组中的每个值调用指定函数,返回一个包含函数返回值的新数组。

  • function pop(): T
    

    删除并返回数组的最后一个值。修改 Array#length。如果数组为空,则抛出 RangeError

  • function push(value: T): i32
    

    在数组末尾添加一个值并返回数组的新长度。修改 Array#length

  • function reduce<U>(
      fn: (accumValue: U, currentValue: T, index: i32, self: Array<T>) => U,
      initialValue: U
    ): U
    

    对数组中的每个值调用指定 reducer 函数,得到一个返回值。相应的先前 reducer 函数的返回值保存在 accumValue 中,从 initialValue 开始,在过程中成为最终返回值。

  • function reduceRight<U>(
      fn: (accumValue: U, currentValue: T, index: i32, self: Array<T>) => U,
      initialValue: U
    ): U
    

    从右到左对数组中的每个值调用指定 reducer 函数,得到一个返回值。有关 reducer 函数的签名,请参见 Array#reduce

  • function reverse(): this
    

    就地反转数组的值,修改数组后再返回。

  • function shift(): T
    

    删除并返回数组的第一个值。修改 Array#length

  • function slice(start?: i32, end?: i32): Array<T>
    

    返回数组从 begin 包含到 end 独占的值的浅拷贝,作为一个新的数组。如果省略,end 默认设置为数组的末尾。

  • function some(fn: (value: T, index: i32, self: Array<T>) => bool): bool
    

    对数组中的每个值调用指定函数,直到找到第一个函数返回 true 的值,返回 true。否则,或如果数组为空,则返回 false

  • function sort(fn?: (a: T, b: T) => i32): this
    

    使用指定的比较器函数就地排序数组的值,修改数组后再返回。比较器返回负值表示 a < b,正值表示 a > b0 表示两者相等。与 JavaScript 不同,JavaScript 会进行隐式字符串转换,比较器默认比较两个 T 类型的的值。

  • function splice(start: i32, deleteCount?: i32): Array<T>
    

    从索引 start 开始,从数组中删除 deleteCount(默认值为所有剩余值)个值,就地修改数组,返回删除的值。

  • function toString(): string
    

    返回 Array#join() 的结果。

  • function unshift(value: T): i32
    

    在数组开头添加一个值并返回数组的新长度。修改 Array#length