[TOC]
# Array<T>
> class
no package
extended by [RegExpMatch](http://#)
* * * * *
所有平台可用
* * * * *
一个 Array 是值的一个存储形式。可以使用索引或者它的API访问。
查看:
* http://haxe.org/manual/std-Array.html
* http://haxe.org/manual/lf-array-comprehension.html
## 构造函数
~~~
new ()
~~~
创建一个新的数组。
## 变量
### `length:Int`
* * * * *
只读。
`this` 数组的长度。
## 方法
### `concat (a:Array<T>):Array<T>`
* * * * *
通过附加 `a` 的元素到 `this` Array 的元素返回一个新的数组。
这个操作不修改 `this` Array。
如果 `a` 是空的数组 `[]` ,返回 `this` Array 的一个拷贝。
返回数组的长度等于 `this.length` 和 `a.length` 的和。
如果 `a` 是 `null` ,结果则是未指定的。
### `copy ():Array<T>`
* * * * *
返回 `this` Array 的一个浅的拷贝。
元素不被拷贝,保留它们的身份,所以,对于任何有效的 `i` , `a[i]==a.copy()[i]` 是 `true`。然而,`a == a.copy()` 总是 `false` 。
### `filter (f:T ‑> Bool):Array<T>`
* * * * *
返回一个数组,包含 this Array 中那些 `f` 返回 `true` 的元素。
个体的元素并不被赋值,保留它们的身份。
如果 f 为 null ,结果则是未指定的。
### `indexOf (x:T, ?fromIndex:Int):Int`
* * * * *
返回 `x` 在 `this` Array 中第一次出现的位置,从前往后搜索。
如果 `x` 通过检查标准相等被发现,函数返回它的索引。
如果 `x` 没有找到,函数返回 `-1` 。
如果 `fromIndex` 被指定,将会用作搜索开始的索引,否则从 `0` 索引开始搜索。如果是负数,它将作为从 `this` Array 末尾的偏移量来计算开始索引。 如果给定的或者计算的开始索引小于 `0` ,整个数组都会被搜索,如果大于或者等于 `this` Array 的长度,函数返回 `-1` 。
### `insert (pos:Int, x:T):Void`
* * * * *
插入元素 `x` 到 `pos` 位置。
这个操作修改 `this` Array。
偏移这样计算:
如果 `pos` 超出 `this.length` ,偏移就是 `this.length`
如果 `pos` 是负数,偏移是从 `this` Array 的末尾计算,即,`this.length + pos` 。如果这产生一个负数,偏移为 `0` 。
否则,偏移就是 `pos` 。
如果结果的偏移没有超过 `this.length` ,所有的元素从这个偏移开始(包括这个偏移)到 `this` Array 的结尾都会向前移动一个索引。
### `iterator ():Iterator<T>`
* * * * *
返回一个这个数组值的迭代器。
### `join (sep:String):String`
* * * * *
返回 `this` Array 的一个 字符串表示,使用 `sep` 分隔每个元素。
这个操作的结果等于 `Std.string(this[0]) + sep + Std.string(this[1]) + sep + ... + sep + Std.string(this[this.length-1])` 。
如果 `this` 是一个空数组 `[]` ,结果是空字符串 `""` 。如果 `this` 刚好有一个元素,结果等于调用 `Std.string(this[0])` 。
如果 `sep` 是 `null` ,结果则是未指定的。
### `lastIndexOf (x:T, ?fromIndex:Int):Int`
* * * * *
返回 `x` 在 `this` Array 中最后出现的位置,从后往前搜索。
如果 `x` 通过检查标准相等被发现,函数返回它的索引。
如果 `x` 没有被找到,函数返回 `-1` 。
如果 `fromIndex` 被指定,它将用作搜索的开始位置,否则搜索从最后一个元素索引开始。如果它是负数,将作为 从 `this` Array 尾部的偏移量来计算开始索引。如果给定或者计算的开始索引大于等于 `this` Array 的长度,整个数组会被搜索,如果它小于 `0` ,函数返回 `-1` 。
### `map<S> (f:T ‑> S):Array<S>`
* * * * *
通过应用函数 `f` 到 `this` 的每个元素创建一个新的数组。
元素的顺序将被保持。
如果 `f` 是 `null` ,结果则是未指定的。
### `pop ():Null<T>`
* * * * *
移除 `this` Array 的最后一个元素并返回它。
这个操作修改 `this` Array 。
如果 `this` 有至少一个元素,`this.length` 会减少 `1` 。
如果 `this` 是空数组 `[]` , `null` 被返回,长度仍然保持 `0` 。
### `push (x:T):Int`
* * * * *
添加元素 `x` 到 `this` Array 的末尾,并返回 `this` Array 新的 长度。
这个操作修改 `this` Array 。
`this.length` 增加 `1` 。
### `remove (x:T):Bool`
* * * * *
移除 `this` Array 中第一次出现的 `x` 。
这个操作修改 `this` Array 。
如果 `x` 通过检查标准相等被发现,它被从 `this` Array 中移除,所有后面的元素被重新索引。然后函数返回 `true` 。
如果 `x` 没有被找到, `this` Array 不会改变,函数返回 `false` 。
### `reverse ():Void`
* * * * *
反转 `this` Array 中元素的顺序。
这个操作修改 `this` Array 。
如果 `this.length < 2` , `this` 不会被改变。
### `shift ():Null<T>`
* * * * *
移除 `this` Array 的第一个元素并返回它。
这个操作修改 `this` Array 。
如果 `this` 有至少一个元素,`this.length` 和 每个剩下的元素的索引降低 `1` 。
如果 `this` 是空数组 `[]` ,`null` 被返回,长度保持为 `0` 。
### `slice (pos:Int, ?end:Int):Array<T>`
* * * * *
创建一个 `this` Array 某个范围的浅拷贝,从 `pos` 开始,包含 `pos` 索引,到 `end` 位置,但是不包含 `end` 索引。
这个操作不修改 `this` Array 。
元素不会被拷贝,保留它们的身份。
如果 `end` 省略,或者超出` this.length` ,默认为 `this` Array 的结尾。
如果 `pos` 或 `end` 是负数,它们的偏移从 `this` Array 的末尾,分别被 `this.length + pos` 和 `this.length + end` 计算。如果这产生一个负数值,被 `0` 替代。
如果 `pos` 超出 `this.length`, 或者, 如果 `end` 超出或者等于 `pos`,结果则为 `[]` 。
### `sort (f:T ‑> T ‑> Int):Void`
* * * * *
根据比较函数 `f` 排序 `this` Array ,如果 `x==y` ,`f(x,y)` 返回 `0` ;如果 `x>y` ,返回一个正整数;如果 `x<y` ,返回一个负整数。
这个操作修改 `this` Array 。
排序操作不保证是稳定的,也就是说,相等的元素的顺序可能被保留。对于一个稳定 Array 排序算法,`haxe.ds.ArraySort.sort()` 可以用来替代它。
如果 `f` 是 `null`, 结果则是未指定的。
### `splice (pos:Int, len:Int):Array<T>`
* * * * *
从 `this` Array 移除 `len` 长度的元素,从 `pos` 位置开始,包括 `pos` 索引,然后返回它们。
这个操作修改 `this` Array 。
如果 `len` 小于 `0`,或者 `pos` 超出 `this.length`, 结果为 空数组 `[]` 。
如果 `pos` 是负数,它的值从 `this` Array的末尾,通过 `this.length + pos` 计算。如果这产生一个负数值,`0` 用来替代它。
如果 `len` 和 `pos` 的和结果超过了 `this.length`, 这个操作会影响从 `pos` 到 `this` Array 末尾的元素。
返回的数组的长度等于 `this` Array 原来的长度减去 `this` Array 新的长度。换句话说,原来 `this` Array 中的每个元素要么保留在 `this` Array中,要么成为返回的数组中的一个元素。
### `toString ():String`
* * * * *
返回 `this` Array 的字符串表现。
结果会包括每个个体元素的字符串表现,并用逗号 , 分隔。闭合的 `[]` 在某些平台会丢失,使用 `Std.string()` 来获得一个字符串表现,可以保持平台间的一致性。
### `unshift (x:T):Void`
* * * * *
添加 `x` 元素到 `this` Array 的开始。
这个操作修改 `this` Array 。
`this.length` 和 `this` Array 中的每个元素索引加 `1` 。