• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Class (Array)
2<!--Kit: ArkTS-->
3<!--Subsystem: CommonLibrary-->
4<!--Owner: @lijiamin2025-->
5<!--Designer: @weng-changcheng-->
6<!--Tester: @kirl75; @zsw_zhushiwei-->
7<!--Adviser: @ge-yafang-->
8> **说明:**
9>
10> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
11>
12> 此模块仅支持在ArkTS文件(文件后缀为.ets)中导入使用。
13
14一种线性数据结构,底层基于数组实现,可以在ArkTS上并发实例间传递。
15
16当需要在ArkTS上并发实例间传递Array时,可以通过传递Array引用提升传递性能。
17
18文档中存在泛型的使用,涉及以下泛型标记符:
19
20- T:Type,支持[Sendable支持的数据类型](../../arkts-utils/arkts-sendable.md#sendable支持的数据类型)。
21
22**装饰器类型:**\@Sendable
23
24## 导入模块
25
26```ts
27import { collections } from '@kit.ArkTS';
28```
29
30## 属性
31
32**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
33
34**系统能力:** SystemCapability.Utils.Lang
35
36| 名称   | 类型   | 只读 | 可选 | 说明              |
37| ------ | ------ | ---- | ---- | ----------------- |
38| length | number | 是   | 否   | Array的元素个数。 |
39
40
41## constructor
42
43constructor()
44
45创建一个ArkTS Array的构造函数。
46
47**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
48
49**系统能力:** SystemCapability.Utils.Lang
50
51**错误码:**
52
53以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
54
55| 错误码ID | 错误信息                                            |
56| -------- | --------------------------------------------------- |
57| 10200012 | The Array's constructor cannot be directly invoked. |
58
59**示例:**
60
61```ts
62let array = new collections.Array<number>();
63```
64
65## constructor
66
67constructor(first: T, ...left: T[])
68
69ArkTS Array的构造函数,通过开发者提供的元素进行初始化。
70
71**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
72
73**系统能力:** SystemCapability.Utils.Lang
74
75**参数:**
76
77| 参数名 | 类型 | 必填 | 说明                            |
78| ------ | ---- | ---- | ------------------------------- |
79| first  | T    | 是   | 初始化ArkTS Array的第一个元素。 |
80| left   | T[]  | 否   | 初始化ArkTS Array的剩余元素。   |
81
82**错误码:**
83
84以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
85
86| 错误码ID | 错误信息                                            |
87| -------- | --------------------------------------------------- |
88| 401      | Parameter error.                                    |
89| 10200012 | The Array's constructor cannot be directly invoked. |
90
91**示例:**
92
93```ts
94let array = new collections.Array<number>(1, 2, 3, 4);
95```
96## constructor
97
98constructor(...items: T[])
99
100ArkTS Array的构造函数,通过开发者提供的元素进行初始化。
101
102**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
103
104**系统能力:** SystemCapability.Utils.Lang
105
106**参数:**
107
108| 参数名 | 类型 | 必填 | 说明                            |
109| ------ | ---- | ---- | ------------------------------- |
110| items  | T[]  | 否   | 初始化ArkTS Array的元素。       |
111
112**错误码:**
113
114以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
115
116| 错误码ID | 错误信息                                            |
117| -------- | --------------------------------------------------- |
118| 401      | Parameter error.                                    |
119| 10200012 | The Array's constructor cannot be directly invoked. |
120
121**示例:**
122
123```ts
124let arrayPara  = [1,2,3];
125let array = new collections.Array<number>(...arrayPara);
126```
127
128## create
129
130static create\<T>(arrayLength: number, initialValue: T): Array\<T>
131
132生成一个固定长度的Array,其中,每个元素的初始值为initialValue。
133
134**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
135
136**系统能力:** SystemCapability.Utils.Lang
137
138**参数:**
139
140| 参数名    | 类型          | 必填 | 说明                            |
141| --------- | ------------- | ---- | ------------------------------- |
142| arrayLength | number | 是   | 用于构造ArkTS Array的长度。 |
143| initialValue | T | 是   | 用于填充ArkTS Array的值。 |
144
145**返回值:**
146
147| 类型      | 说明                    |
148| --------- | ----------------------- |
149| Array\<T> | 新创建的ArkTS Array实例。 |
150
151**错误码:**
152
153以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
154
155| 错误码ID | 错误信息                         |
156| -------- | -------------------------------- |
157| 401      | Parameter error.                   |
158
159**示例:**
160
161```ts
162let array = collections.Array.create<number>(3, 10); // [10, 10, 10]
163```
164
165## from
166
167static from\<T>(arrayLike: ArrayLike\<T>): Array\<T>
168
169从一个实现了ArrayLike接口的对象创建一个新的ArkTS Array。
170
171**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
172
173**系统能力:** SystemCapability.Utils.Lang
174
175**参数:**
176
177| 参数名    | 类型          | 必填 | 说明                            |
178| --------- | ------------- | ---- | ------------------------------- |
179| arrayLike | ArrayLike\<T> | 是   | 用于构造ArkTS Array的对象。 |
180
181**返回值:**
182
183| 类型      | 说明                    |
184| --------- | ----------------------- |
185| Array\<T> | 新创建的ArkTS Array实例。 |
186
187**错误码:**
188
189以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
190
191| 错误码ID | 错误信息                         |
192| -------- | -------------------------------- |
193| 401      | Parameter error.                 |
194
195**示例:**
196
197```ts
198// 正例
199let array : Array<string> = ['str1', 'str2', 'str3']; // 原生Array<T>,T是Sendable数据类型。
200let sendableArray = collections.Array.from<string>(array); // 返回Sendable Array<T>
201```
202
203<!--code_no_check-->
204```ts
205// 反例
206let array : Array<Array<string>> = [['str1', 'str2', 'str3'], ['str4', 'str5', 'str6'], ['str7', 'str8', 'str9']]; // 原生Array<T>,T是非Sendable数据类型。
207let sendableArray = collections.Array.from<Array<string>>(array); // 打印异常信息:Parameter error.Only accept sendable value
208```
209
210## from
211
212static from\<T>(iterable: Iterable\<T>): Array\<T>
213
214从一个实现了Iterable接口的对象创建一个新的ArkTS Array。
215
216**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
217
218**系统能力:** SystemCapability.Utils.Lang
219
220**参数:**
221
222| 参数名    | 类型          | 必填 | 说明                            |
223| --------- | ------------- | ---- | ------------------------------- |
224| iterable | Iterable\<T> | 是   | 用于构造ArkTS Array的对象。 |
225
226**返回值:**
227
228| 类型      | 说明                    |
229| --------- | ----------------------- |
230| Array\<T> | 新创建的ArkTS Array实例。 |
231
232**错误码:**
233
234以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
235
236| 错误码ID | 错误信息                         |
237| -------- | -------------------------------- |
238| 401 | Parameter error: Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
239
240**示例:**
241
242```ts
243// 正例
244const mapper = new Map([
245  ['1', 'a'],
246  ['2', 'b'],
247]);
248let newArray: collections.Array<string> = collections.Array.from(mapper.values());
249console.info(newArray.toString()); // 预期输出: a,b
250```
251
252## from<sup>18+</sup>
253
254static from\<T>(arrayLike: ArrayLike\<T> | Iterable\<T>, mapFn: ArrayFromMapFn\<T, T>): Array\<T>
255
256从一个实现了ArrayLike接口的对象创建一个新的ArkTS Array,并且使用自定义函数处理每个数组元素。
257
258**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
259
260**系统能力:** SystemCapability.Utils.Lang
261
262**参数:**
263
264| 参数名    | 类型          | 必填 | 说明                            |
265| --------- | ------------- | ---- | ------------------------------- |
266| arrayLike | ArrayLike\<T> \| Iterable\<T> | 是   | 用于构造ArkTS Array的对象。 |
267| mapFn | [ArrayFromMapFn](arkts-apis-arkts-collections-Types.md#arrayfrommapfn18)\<T,T> | 是   | 调用数组每个元素的函数。 |
268
269**返回值:**
270
271| 类型      | 说明                    |
272| --------- | ----------------------- |
273| Array\<T> | 新创建的ArkTS Array实例。 |
274
275**错误码:**
276
277以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
278
279| 错误码ID | 错误信息                         |
280| -------- | -------------------------------- |
281| 401 | Parameter error: Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
282
283**示例:**
284
285```ts
286let array : Array<number> = [1, 2, 3]; // 原生Array<T>,T是Sendable数据类型。
287let newArray = collections.Array.from<number>(array, (value, index) => value + index); // 返回新的 Array<T>
288console.info(newArray.toString()); // 预期输出: 1, 3, 5
289```
290
291## from<sup>18+</sup>
292
293static from\<U, T>(arrayLike: ArrayLike\<U> | Iterable\<U>, mapFn: ArrayFromMapFn\<U, T>): Array\<T>
294
295从一个实现了ArrayLike接口的对象创建一个新的ArkTS Array,并且使用自定义函数处理每个数组元素,ArrayLike接口对象的元素类型可以和数组元素的类型不一样。
296
297**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
298
299**系统能力:** SystemCapability.Utils.Lang
300
301**参数:**
302
303| 参数名    | 类型          | 必填 | 说明                            |
304| --------- | ------------- | ---- | ------------------------------- |
305| arrayLike | ArrayLike\<U> \| Iterable\<U> | 是   | 用于构造ArkTS Array的对象。 |
306| mapFn | [ArrayFromMapFn](arkts-apis-arkts-collections-Types.md#arrayfrommapfn18)\<U, T> | 是   | 调用数组每个元素的函数。 |
307
308**返回值:**
309
310| 类型      | 说明                    |
311| --------- | ----------------------- |
312| Array\<T> | 新创建的ArkTS Array实例。 |
313
314**错误码:**
315
316以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
317
318| 错误码ID | 错误信息                         |
319| -------- | -------------------------------- |
320| 401 | Parameter error: Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
321
322**示例:**
323
324```ts
325let array : Array<number> = [1, 2, 3]; // 原生Array<T>
326let newArray = collections.Array.from<number, string>(array, (value, index) => value + "." + index); // 返回新的 Array<T>
327console.info(newArray.toString()); // 预期输出: 1.0, 2.1, 3.2
328```
329
330## isArray<sup>18+</sup>
331
332static isArray(value: Object | undefined | null): boolean
333
334检查传入的参数是否是一个ArkTS Array。
335
336**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
337
338**系统能力:** SystemCapability.Utils.Lang
339
340**参数:**
341
342| 参数名    | 类型          | 必填 | 说明                            |
343| --------- | ------------- | ---- | ------------------------------- |
344| value | Object \| undefined \| null | 是   | 需要被检查的值。 |
345
346**返回值:**
347
348| 类型      | 说明                    |
349| --------- | ----------------------- |
350| boolean | 假如给定对象是ArkTS Array数组,返回true,否则返回false。 |
351
352**错误码:**
353
354以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
355
356| 错误码ID | 错误信息                         |
357| -------- | -------------------------------- |
358| 401 | Parameter error: Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
359
360**示例:**
361
362```ts
363let arr: collections.Array<string> = new collections.Array('a', 'b', 'c', 'd');
364let result: boolean = collections.Array.isArray(arr);
365console.info(result + ''); // 预期输出: true
366```
367
368## of<sup>18+</sup>
369
370static of\<T>(...items: T\[]): Array\<T>
371
372通过可变数量的参数创建一个新的ArkTS Array。
373
374**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
375
376**系统能力:** SystemCapability.Utils.Lang
377
378**参数:**
379
380| 参数名    | 类型          | 必填 | 说明                            |
381| --------- | ------------- | ---- | ------------------------------- |
382| items | T[] | 否   | 用于创建数组的元素集合,参数个数可以是0个、1个或者多个。 |
383
384**返回值:**
385
386| 类型      | 说明                    |
387| --------- | ----------------------- |
388| Array\<T> | 新的ArkTS Array实例。 |
389
390**错误码:**
391
392以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
393
394| 错误码ID | 错误信息                         |
395| -------- | -------------------------------- |
396| 401 | Parameter error: Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
397
398**示例:**
399
400```ts
401let arr: collections.Array<string> = collections.Array.of('a', 'b', 'c', 'd');
402console.info(arr.toString()); // 预期输出: a, b, c, d
403```
404
405## copyWithin<sup>18+</sup>
406copyWithin(target: number, start: number, end?: number): Array\<T>
407
408从ArkTS Array指定范围内的元素依次拷贝到目标位置。
409
410**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
411
412**系统能力:** SystemCapability.Utils.Lang
413
414**参数:**
415
416| 参数名  | 类型   | 必填 | 说明                                                         |
417| ------- | ------ | ---- | ------------------------------------------------------------ |
418| target | number | 是 | 目标起始位置的下标,如果`target < 0`,则会从`target + array.length`位置开始。 |
419| start | number | 是 | 源起始位置下标,如果`start < 0`,则会从`start + array.length`位置开始。 |
420| end | number | 否 | 源终止位置下标,如果`end < 0`,则会从`end + array.length`位置终止。默认为ArkTS Array的长度。|
421
422**返回值:**
423
424| 类型         | 说明      |
425| ------------ | --------- |
426| Array\<T> | 修改后的Array。 |
427
428**错误码:**
429
430以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
431
432| 错误码ID | 错误信息                                          |
433| -------- | ------------------------------------------------ |
434| 401 | Parameter error: Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
435| 10200011 | The copyWithin method cannot be bound.           |
436| 10200201 | Concurrent modification error.               |
437
438**示例:**
439
440```ts
441let array: collections.Array<number> = collections.Array.from([1, 2, 3, 4, 5, 6, 7, 8]);
442let copied: collections.Array<number> = array.copyWithin(3, 1, 3);
443console.info(copied.toString()); // 预期输出: 1, 2, 3, 2, 3, 6, 7, 8
444```
445
446## lastIndexOf<sup>18+</sup>
447
448lastIndexOf(searchElement: T, fromIndex?: number): number
449
450返回ArkTS Array实例中最后一次出现searchElement的索引,如果对象不包含,则为-1。
451
452**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
453
454**系统能力:** SystemCapability.Utils.Lang
455
456**参数:**
457
458| 参数名           | 类型     | 必填  | 说明                                                                                |
459| ------------- | ------ | --- | --------------------------------------------------------------------------------- |
460| searchElement | T | 是   | 待索引的值。                                                                            |
461| fromIndex     | number | 否   | 搜索的起始下标。默认值为0。如果下标大于等于ArkTS Array的长度,则返回-1。如果提供的下标值是负数,则从数组末尾开始倒数计数:使用 fromIndex + array.length 的值。 |
462
463**返回值:**
464
465| 类型     | 说明                      |
466| ------ | ----------------------- |
467| number | 数组中元素的最后一个索引;没有找到,则返回-1。 |
468
469**错误码:**
470
471以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
472
473| 错误码ID    | 错误信息                                    |
474| -------- | --------------------------------------- |
475| 10200011 | The lastIndexOf method cannot be bound. |
476| 10200201 | Concurrent modification error.      |
477
478**示例:**
479
480```ts
481let array: collections.Array<number> = collections.Array.from([3, 5, 9]);
482console.info(array.lastIndexOf(3) + ''); // 预期输出: 0
483console.info(array.lastIndexOf(7) + ''); // 预期输出: -1
484console.info(array.lastIndexOf(9, 2) + ''); // 预期输出: 2
485console.info(array.lastIndexOf(9, -2) + ''); // 预期输出: -1
486```
487
488## some<sup>18+</sup>
489some(predicate: ArrayPredicateFn\<T, Array\<T>>): boolean
490
491测试ArkTS Array是否存在满足指定条件的元素。
492
493**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
494
495**系统能力:** SystemCapability.Utils.Lang
496
497**参数:**
498
499| 参数名  | 类型   | 必填 | 说明                                                  |
500| ------- | ------ | ---- | ---------------------------------------------------- |
501| predicate | [ArrayPredicateFn](arkts-apis-arkts-collections-Types.md#arraypredicatefn18)\<T, Array\<T>> | 是 | 用于测试的断言函数。|
502
503**返回值:**
504
505| 类型         | 说明      |
506| ------------ | --------- |
507| boolean | 如果存在元素满足指定条件返回true,否则返回false。|
508
509**错误码:**
510
511以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
512
513| 错误码ID | 错误信息                            |
514| -------- | ---------------------------------- |
515| 10200011 | The some method cannot be bound.   |
516| 10200201 | Concurrent modification error. |
517
518**示例:**
519
520```ts
521let newArray: collections.Array<number> = collections.Array.from([-10, 20, -30, 40, -50]);
522console.info(newArray.some((element: number) => element < 0) + ''); // 预期输出: true
523```
524
525## reduceRight<sup>18+</sup>
526
527reduceRight(callbackFn: ArrayReduceCallback\<T, T, Array\<T>>): T
528
529对Array中的每个元素按照从右到左顺序执行回调函数,将其结果作为累加值,并返回最终的结果。
530
531**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
532
533**系统能力:** SystemCapability.Utils.Lang
534
535**参数:**
536
537| 参数名        | 类型                                                                               | 必填  | 说明                                         |
538| ---------- | -------------------------------------------------------------------------------- | --- | ------------------------------------------ |
539| callbackFn | [ArrayReduceCallback](arkts-apis-arkts-collections-Types.md#arrayreducecallback18)\<T, T, Array\<T>> | 是   | 一个接受四个参数的函数,用于对每个元素执行操作,并将结果作为累加值传递给下一个元素。 |
540
541**返回值:**
542
543| 类型  | 说明            |
544| --- | ------------- |
545| T   | 回调函数执行后的最终结果。 |
546
547**错误码:**
548
549以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
550
551| 错误码ID    | 错误信息                                    |
552| -------- | --------------------------------------- |
553| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
554| 10200011 | The reduceRight method cannot be bound. |
555| 10200201 | Concurrent modification error.          |
556
557**示例:**
558
559```ts
560let array = new collections.Array<number>(1, 2, 3, 4, 5);
561let reducedValue = array.reduceRight((accumulator, value) => accumulator + value); // 累加所有元素
562console.info(reducedValue + ''); // 预期输出: 15
563```
564
565## reduceRight<sup>18+</sup>
566
567reduceRight\<U = T>(callbackFn: ArrayReduceCallback\<U, T, Array\<T>>, initialValue: U): U
568
569与 [reduceRight](#reduceright18)方法类似,但它接受一个初始值作为第二个参数,用于在Array从右到左顺序遍历开始前初始化累加器。
570
571**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
572
573**系统能力:** SystemCapability.Utils.Lang
574
575**参数:**
576
577| 参数名          | 类型                                                                                           | 必填  | 说明                                         |
578| ------------ | -------------------------------------------------------------------------------------------- | --- | ------------------------------------------ |
579| callbackFn   | [ArrayReduceCallback](arkts-apis-arkts-collections-Types.md#arrayreducecallback18)\<U, T, Array\<T>> | 是   | 一个接受四个参数的函数,用于对每个元素执行操作,并将结果作为累加值传递给下一个元素。 |
580| initialValue | U                                                                                            | 是   | 用于初始化累加器的值。                                |
581
582**返回值:**
583
584| 类型  | 说明            |
585| --- | ------------- |
586| U   | 回调函数执行后的最终结果。 |
587
588**错误码:**
589
590以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
591
592| 错误码ID    | 错误信息                                    |
593| -------- | --------------------------------------- |
594| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
595| 10200011 | The reduceRight method cannot be bound. |
596| 10200201 | Concurrent modification error.          |
597
598**示例:**
599
600```ts
601// 此处使用一个初始值为0的累加器,并将其与Array中的每个元素相加,最终返回累加后的总和
602let array = new collections.Array<number>(1, 2, 3, 4, 5);
603let reducedValue = array.reduceRight<number>((accumulator: number, value: number) => accumulator + value, 0); // 累加所有元素,初始值为0
604console.info(reducedValue + ''); // 预期输出: 15
605```
606
607## pop
608
609pop(): T | undefined
610
611从ArkTS Array中移除并返回最后一个元素。如果Array为空,则返回undefined,且Array不发生变化。
612
613**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
614
615**系统能力:** SystemCapability.Utils.Lang
616
617**返回值:**
618
619| 类型           | 说明                                                |
620| -------------- | --------------------------------------------------- |
621| T \| undefined | 从Array中移除的元素;如果Array为空,则返回undefined。 |
622
623**错误码:**
624
625以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
626
627| 错误码ID | 错误信息                        |
628| -------- | ------------------------------- |
629| 10200011 | The pop method cannot be bound. |
630| 10200201 | Concurrent modification error.  |
631
632**示例:**
633
634```ts
635let array = new collections.Array<number>(1, 2, 3);
636let lastElement = array.pop(); // 返回3,Array变为[1, 2]
637```
638
639## push
640
641push(...items: T[]): number
642
643在ArkTS Array的末尾添加元素,并返回新的Array长度。
644
645**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
646
647**系统能力:** SystemCapability.Utils.Lang
648
649**参数:**
650
651| 参数名 | 类型 | 必填 | 说明                               |
652| ------ | ---- | ---- | ---------------------------------- |
653| items  | T[]  | 否   | 要添加到Array末尾的元素。 |
654
655**返回值:**
656
657| 类型   | 说明               |
658| ------ | ------------------ |
659| number | 返回新Array的长度。 |
660
661**错误码:**
662
663以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
664
665| 错误码ID | 错误信息                         |
666| -------- | -------------------------------- |
667| 401      | Parameter error.                 |
668| 10200011 | The push method cannot be bound. |
669| 10200201 | Concurrent modification error.   |
670
671**示例:**
672
673```ts
674let array = new collections.Array<number>(1, 2, 3);
675let length = array.push(4, 5); // 返回5,Array变为[1, 2, 3, 4, 5]
676```
677
678## join
679
680join(separator?: string): string
681
682将ArkTS Array的所有元素连接成一个字符串,元素之间可以用指定的分隔符分隔。
683
684**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
685
686**系统能力:** SystemCapability.Utils.Lang
687
688**参数:**
689
690| 参数名    | 类型   | 必填 | 说明                                                 |
691| --------- | ------ | ---- | ---------------------------------------------------- |
692| separator | string | 否   | 用于分隔Array元素的字符串。如果省略,则使用逗号分隔。 |
693
694**返回值:**
695
696| 类型   | 说明                                                         |
697| ------ | ------------------------------------------------------------ |
698| string | 包含所有Array元素连接成的字符串。如果Array为空,则返回空字符串。 |
699
700**错误码:**
701
702以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
703
704| 错误码ID | 错误信息                         |
705| -------- | -------------------------------- |
706| 401      | Parameter error.                 |
707| 10200011 | The join method cannot be bound. |
708| 10200201 | Concurrent modification error.   |
709
710**示例:**
711
712```ts
713let array = new collections.Array<string>('a', 'b', 'c');
714let joinedString = array.join('-'); // 返回 "a-b-c"
715```
716
717## shift
718
719shift(): T | undefined
720
721从ArkTS Array中移除并返回第一个元素。如果Array为空,则返回undefined,且Array不发生变化。
722
723**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
724
725**系统能力:** SystemCapability.Utils.Lang
726
727**返回值:**
728
729| 类型           | 说明                                                |
730| -------------- | --------------------------------------------------- |
731| T \| undefined | 从Array中移除的元素;如果Array为空,则返回undefined。 |
732
733**错误码:**
734
735以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
736
737| 错误码ID | 错误信息                          |
738| -------- | --------------------------------- |
739| 10200011 | The shift method cannot be bound. |
740| 10200201 | Concurrent modification error.    |
741
742**示例:**
743
744```ts
745let array = new collections.Array<number>(1, 2, 3);
746let firstElement = array.shift(); // 返回1,Array变为[2, 3]
747```
748
749## reverse<sup>18+</sup>
750
751reverse(): Array\<T>
752
753反转ArkTS Array数组中的元素,并返回同一数组的引用。
754
755**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
756
757**系统能力:** SystemCapability.Utils.Lang
758
759**返回值:**
760
761| 类型    | 说明                 |
762| ----- | ------------------ |
763| Array\<T> | 反转后的ArkTS Array对象。 |
764
765**错误码:**
766
767以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
768
769| 错误码ID    | 错误信息                                |
770| -------- | ----------------------------------- |
771| 10200011 | The reverse method cannot be bound. |
772| 10200201 | Concurrent modification error.  |
773
774**示例:**
775
776```ts
777let array = new collections.Array<number>(1, 2, 3, 4, 5);
778let reversed = array.reverse();
779console.info(array.toString()); // 预期输出: 5, 4, 3, 2, 1
780```
781
782## unshift
783
784unshift(...items: T[]): number
785
786在ArkTS Array的首端插入元素,并返回新的Array长度。
787
788**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
789
790**系统能力:** SystemCapability.Utils.Lang
791
792**参数:**
793
794| 参数名 | 类型 | 必填 | 说明                     |
795| ------ | ---- | ---- | ------------------------ |
796| items  | T[]  | 否   | 要插入到Array首端的元素。 |
797
798**返回值:**
799
800| 类型   | 说明           |
801| ------ | -------------- |
802| number | 新Array的长度。 |
803
804**错误码:**
805
806以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
807
808| 错误码ID | 错误信息                            |
809| -------- | ----------------------------------- |
810| 401      | Parameter error.                    |
811| 10200011 | The unshift method cannot be bound. |
812| 10200201 | Concurrent modification error.      |
813
814**示例:**
815
816```ts
817let array = new collections.Array<number>(1, 2, 3);
818let newLength = array.unshift(0); // 返回4,Array变为[0, 1, 2, 3]
819```
820
821## toString<sup>18+</sup>
822
823toString(): string
824
825ArkTS数组转换为字符串。
826
827**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
828
829**系统能力:** SystemCapability.Utils.Lang
830
831**返回值:**
832
833| 类型         | 说明            |
834| ---------- | ------------- |
835| string | 一个包含数组所有元素的字符串。 |
836
837**错误码:**
838
839以下错误码详细介绍请参考[语言基础类库错误码](errorcode-utils.md)。
840
841| 错误码ID    | 错误信息                                 |
842| -------- | ------------------------------------ |
843| 10200011 | The toString method cannot be bound. |
844| 10200201 | Concurrent modification error.       |
845
846**示例:**
847
848```ts
849let array = new collections.Array<number>(1, 2, 3, 4, 5);
850let stringArray = array.toString();
851console.info(stringArray); // 预期输出:1,2,3,4,5
852```
853
854## slice
855
856slice(start?: number, end?: number): Array\<T>
857
858返回一个新的Array,该Array是原始ArkTS Array的切片。
859
860**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
861
862**系统能力:** SystemCapability.Utils.Lang
863
864**参数:**
865| 参数名 | 类型   | 必填 | 说明                                                         |
866| ------ | ------ | ---- | ------------------------------------------------------------ |
867| start  | number | 否   | 开始索引。如果`start < 0`,则会从`start + array.length`位置开始。默认值为0。   |
868| end    | number | 否   | 结束索引(不包括该元素)。如果`end < 0`,则会到`end + array.length`位置结束。默认为原始ArkTS Array的长度。 |
869
870**返回值:**
871
872| 类型      | 说明                       |
873| --------- | -------------------------- |
874| Array\<T> | 包含原始Array切片的新Array。 |
875
876**错误码:**
877
878以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
879
880| 错误码ID | 错误信息                          |
881| -------- | --------------------------------- |
882| 401      | Parameter error.                  |
883| 10200011 | The slice method cannot be bound. |
884| 10200201 | Concurrent modification error.    |
885
886**示例:**
887
888```ts
889let array = new collections.Array<number>(1, 2, 3, 4, 5);
890let slicedArray = array.slice(1, 3); // 返回[2, 3],Array保持不变
891```
892
893## sort
894
895sort(compareFn?: (a: T, b: T) => number): Array\<T>
896
897对ArkTS Array进行排序,并返回排序后的Array。
898
899**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
900
901**系统能力:** SystemCapability.Utils.Lang
902
903**参数:**
904
905| 参数名    | 类型                   | 必填 | 说明                                       |
906| --------- | ---------------------- | ---- | ------------------------------------------ |
907| compareFn | (a: T, b: T) => number | 否   | 用于确定元素顺序的函数。默认使用升序排序。 |
908
909**返回值:**
910
911| 类型      | 说明           |
912| --------- | -------------- |
913| Array\<T> | 排序后的Array。 |
914
915**错误码:**
916
917以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
918
919| 错误码ID | 错误信息                         |
920| -------- | -------------------------------- |
921| 401      | Parameter error.                 |
922| 10200011 | The sort method cannot be bound. |
923| 10200201 | Concurrent modification error.   |
924
925**示例:**
926
927```ts
928let array = new collections.Array<number>(1, 3, 5, 4, 2);
929array.sort((a: number, b: number) => a - b); // [1, 2, 3, 4, 5]
930array.sort((a: number, b: number) => b - a); // [5, 4, 3, 2, 1]
931```
932
933## indexOf
934
935indexOf(searchElement: T, fromIndex?: number): number
936
937返回在ArkTS Array中搜索元素首次出现的索引,如果不存在则返回-1。
938
939**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
940
941**系统能力:** SystemCapability.Utils.Lang
942
943**参数:**
944
945| 参数名        | 类型   | 必填 | 说明                        |
946| ------------- | ------ | ---- | --------------------------- |
947| searchElement | T      | 是   | 要搜索的值。                |
948| fromIndex     | number | 否   | 开始搜索的索引,从0开始,默认值为0。 |
949
950**返回值:**
951
952| 类型   | 说明                                           |
953| ------ | ---------------------------------------------- |
954| number | 搜索元素首次出现的索引;如果不存在,则返回-1。 |
955
956**错误码:**
957
958以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
959
960| 错误码ID | 错误信息                            |
961| -------- | ----------------------------------- |
962| 401      | Parameter error.                    |
963| 10200011 | The indexOf method cannot be bound. |
964| 10200201 | Concurrent modification error.      |
965
966**示例:**
967
968```ts
969let array = new collections.Array<string>('a', 'b', 'c');
970let index = array.indexOf('b'); // 返回1,因为'b'在索引1的位置
971```
972
973## forEach
974
975forEach(callbackFn: (value: T, index: number, array: Array\<T>) => void): void
976
977对Array中的每个元素执行提供的回调函数。
978
979**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
980
981**系统能力:** SystemCapability.Utils.Lang
982
983**参数:**
984
985| 参数名     | 类型                                                | 必填 | 说明                           |
986| ---------- | --------------------------------------------------- | ---- | ------------------------------ |
987| callbackFn | (value: T, index: number, array: Array\<T>) => void | 是   | 用于对每个元素执行的回调函数。 |
988
989**错误码:**
990
991以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
992
993| 错误码ID | 错误信息                            |
994| -------- | ----------------------------------- |
995| 401      | Parameter error.                    |
996| 10200011 | The forEach method cannot be bound. |
997| 10200201 | Concurrent modification error.      |
998
999**示例:**
1000
1001```ts
1002let array = new collections.Array<string>('a', 'b', 'c');
1003array.forEach((value, index, array) => {
1004  console.info(`Element ${value} at index ${index}`);
1005});
1006```
1007
1008## map
1009
1010map\<U>(callbackFn: (value: T, index: number, array: Array\<T>) => U): Array\<U>
1011
1012对Array中的每个元素执行提供的回调函数,并返回一个新的Array,该Array包含回调函数的结果。
1013
1014**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1015
1016**系统能力:** SystemCapability.Utils.Lang
1017
1018**参数:**
1019
1020| 参数名     | 类型                                             | 必填 | 说明                           |
1021| ---------- | ------------------------------------------------ | ---- | ------------------------------ |
1022| callbackFn | (value: T, index: number, array: Array\<T>) => U | 是   | 用于对每个元素执行的回调函数。 |
1023
1024**返回值:**
1025
1026| 类型      | 说明                       |
1027| --------- | -------------------------- |
1028| Array\<U> | 包含回调函数结果的新Array。 |
1029
1030**错误码:**
1031
1032以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1033
1034| 错误码ID | 错误信息                        |
1035| -------- | ------------------------------- |
1036| 401      | Parameter error.                |
1037| 10200011 | The map method cannot be bound. |
1038| 10200201 | Concurrent modification error.  |
1039
1040**示例:**
1041
1042```ts
1043// 此处将原始Array中的每个字符串元素转换为大写形式,并返回一个新Array,其中包含转换后的字符串
1044let array = new collections.Array<string>('a', 'b', 'c');
1045let mappedArray = array.map((value, index, array) => {
1046  return value.toUpperCase(); // 将每个字符串元素转换为大写
1047});
1048console.info("" + mappedArray); // 输出: A, B, C
1049```
1050
1051## filter
1052
1053filter(predicate: (value: T, index: number, array: Array\<T>) => boolean): Array\<T>
1054
1055返回一个新Array,其中包含通过指定回调函数测试的所有元素。
1056
1057**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1058
1059**系统能力:** SystemCapability.Utils.Lang
1060
1061**参数:**
1062
1063| 参数名    | 类型                                                   | 必填 | 说明                                                         |
1064| --------- | ------------------------------------------------------ | ---- | ------------------------------------------------------------ |
1065| predicate | (value: T, index: number, array: Array\<T>) => boolean | 是   | 一个接受三个参数的函数,用于测试每个元素是否应该包含在新Array中。当返回值为true时表示当前元素通过测试,需被保留在新数组中。为false时表示当前元素未通过测试,需被排除在新数组外。 |
1066
1067**返回值:**
1068
1069| 类型      | 说明                         |
1070| --------- | ---------------------------- |
1071| Array\<T> | 包含通过测试的元素的新Array。 |
1072
1073**错误码:**
1074
1075以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1076
1077| 错误码ID | 错误信息                           |
1078| -------- | ---------------------------------- |
1079| 401      | Parameter error.                   |
1080| 10200011 | The filter method cannot be bound. |
1081| 10200201 | Concurrent modification error.     |
1082
1083**示例:**
1084
1085```ts
1086let array = new collections.Array<number>(1, 2, 3, 4, 5);
1087let filteredArray = array.filter((value : number) => value % 2 === 0); // 返回[2, 4],只包含偶数
1088```
1089
1090## reduce
1091
1092reduce(callbackFn: (previousValue: T, currentValue: T, currentIndex: number, array: Array\<T>) => T): T
1093
1094对Array中的每个元素执行回调函数,将其结果作为累加值,并返回最终的结果。
1095
1096**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1097
1098**系统能力:** SystemCapability.Utils.Lang
1099
1100**参数:**
1101
1102| 参数名     | 类型                                                         | 必填 | 说明                                                         |
1103| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
1104| callbackFn | (previousValue: T, currentValue: T, currentIndex: number, array: Array\<T>) => T | 是   | 一个接受四个参数的函数,用于对每个元素执行操作,并将结果作为累加值传递给下一个元素。 |
1105
1106**返回值:**
1107
1108| 类型 | 说明                       |
1109| ---- | -------------------------- |
1110| T    | 回调函数执行后的最终结果。 |
1111
1112**错误码:**
1113
1114以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1115
1116| 错误码ID | 错误信息                           |
1117| -------- | ---------------------------------- |
1118| 401      | Parameter error.                   |
1119| 10200011 | The reduce method cannot be bound. |
1120| 10200201 | Concurrent modification error.     |
1121
1122**示例:**
1123
1124```ts
1125let array = new collections.Array<number>(1, 2, 3, 4, 5);
1126let reducedValue = array.reduce((accumulator, value) => accumulator + value); // 返回15,累加所有元素
1127```
1128
1129## reduce
1130
1131reduce\<U>(callbackFn: (previousValue: U, currentValue: T, currentIndex: number, array: Array\<T>) => U, initialValue: U): U
1132
1133与 reduce方法类似,但它接受一个初始值作为第二个参数,用于在Array遍历开始前初始化累加器。
1134
1135**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1136
1137**系统能力:** SystemCapability.Utils.Lang
1138
1139**参数:**
1140
1141| 参数名       | 类型                                                         | 必填 | 说明                                                         |
1142| ------------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
1143| callbackFn   | (previousValue: U, currentValue: T, currentIndex: number, array: Array\<T>) => U | 是   | 一个接受四个参数的函数,用于对每个元素执行操作,并将结果作为累加值传递给下一个元素。 |
1144| initialValue | U                                                            | 是   | 用于初始化累加器的值。                                       |
1145
1146**返回值:**
1147
1148| 类型 | 说明                       |
1149| ---- | -------------------------- |
1150| U    | 回调函数执行后的最终结果。 |
1151
1152**错误码:**
1153
1154以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1155
1156| 错误码ID | 错误信息                           |
1157| -------- | ---------------------------------- |
1158| 401      | Parameter error.                   |
1159| 10200011 | The reduce method cannot be bound. |
1160| 10200201 | Concurrent modification error.     |
1161
1162**示例:**
1163
1164```ts
1165// 此处使用一个初始值为0的累加器,并将其与Array中的每个元素相加,最终返回累加后的总和
1166let array = new collections.Array(1, 2, 3, 4, 5);
1167let reducedValue = array.reduce<number>((accumulator: number, value: number) => accumulator + value, 0); // 返回15,累加所有元素,初始值为0
1168```
1169
1170## at
1171
1172at(index: number): T | undefined
1173
1174返回Array中指定索引位置的元素。
1175
1176**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1177
1178**系统能力:** SystemCapability.Utils.Lang
1179
1180**参数:**
1181
1182| 参数名 | 类型   | 必填 | 说明                                                         |
1183| ------ | ------ | ---- | ------------------------------------------------------------ |
1184| index  | number | 是   | 要返回的Array元素的索引(从零开始),取值为整数。负数索引从Array末尾开始计数,如果`index < 0`,则会访问`index + array.length`位置的元素。 |
1185
1186
1187**返回值:**
1188
1189| 类型           | 说明                                                         |
1190| -------------- | ------------------------------------------------------------ |
1191| T \| undefined | 返回指定索引处的元素;如果索引超出范围或无效,则返回undefined。 |
1192
1193**错误码:**
1194
1195以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1196
1197| 错误码ID | 错误信息                       |
1198| -------- | ------------------------------ |
1199| 401      | Parameter error.               |
1200| 10200011 | The at method cannot be bound. |
1201| 10200201 | Concurrent modification error. |
1202
1203**示例:**
1204
1205```ts
1206let array = new collections.Array<number>(1, 2, 3, 4, 5);
1207let elementAtIndex = array.at(2); // 返回3,因为索引是从0开始的
1208```
1209
1210## entries
1211
1212entries(): IterableIterator<[number, T]>
1213
1214返回一个新的可迭代对象,该对象包含Array中每个元素的键值对。
1215
1216**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1217
1218**系统能力:** SystemCapability.Utils.Lang
1219
1220**返回值:**
1221
1222| 类型                          | 说明                                       |
1223| ----------------------------- | ------------------------------------------ |
1224| IterableIterator<[number, T]> | 包含Array中每个元素的键值对的迭代器。 |
1225
1226**错误码:**
1227
1228以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
1229
1230| 错误码ID | 错误信息                            |
1231| -------- | ----------------------------------- |
1232| 10200011 | The entries method cannot be bound. |
1233| 10200201 | Concurrent modification error.      |
1234
1235**示例:**
1236
1237```ts
1238let array = new collections.Array<number>(1, 2, 3, 4, 5);
1239let iterator = array.entries();
1240console.info(iterator.next().value); // 输出:[0, 1],第一个元素的键值对
1241```
1242
1243## keys
1244
1245keys(): IterableIterator\<number>
1246
1247返回一个新的可迭代对象,该对象包含Array中每个元素的索引。
1248
1249**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1250
1251**系统能力:** SystemCapability.Utils.Lang
1252
1253**返回值:**
1254
1255| 类型                      | 说明                                   |
1256| ------------------------- | -------------------------------------- |
1257| IterableIterator\<number> | 包含Array中每个元素的索引的可迭代迭代器。 |
1258
1259**错误码:**
1260
1261以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
1262
1263| 错误码ID | 错误信息                         |
1264| -------- | -------------------------------- |
1265| 10200011 | The keys method cannot be bound. |
1266| 10200201 | Concurrent modification error.   |
1267
1268**示例:**
1269
1270```ts
1271let array = new collections.Array<number>(1, 2, 3, 4, 5);
1272let iterator = array.keys();
1273for (const key of iterator) {
1274  console.info("" + key); // 依次输出 0,1,2,3,4
1275}
1276```
1277
1278## values
1279
1280values(): IterableIterator\<T>
1281
1282返回一个新的可迭代对象,该对象包含Array中每个元素的值。
1283
1284**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1285
1286**系统能力:** SystemCapability.Utils.Lang
1287
1288**返回值:**
1289
1290| 类型                 | 说明                                   |
1291| -------------------- | -------------------------------------- |
1292| IterableIterator\<T> | 包含Array中每个元素的值的可迭代迭代器。 |
1293
1294**错误码:**
1295
1296以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
1297
1298| 错误码ID | 错误信息                           |
1299| -------- | ---------------------------------- |
1300| 10200011 | The values method cannot be bound. |
1301| 10200201 | Concurrent modification error.     |
1302
1303**示例:**
1304
1305```ts
1306let array = new collections.Array<number>(1, 2, 3, 4, 5);
1307let iterator = array.values();
1308for(const value of iterator) {
1309  console.info("" + value); // 依次输出 1,2,3,4,5
1310}
1311```
1312
1313## find
1314
1315find(predicate: (value: T, index: number, obj: Array\<T>) => boolean): T | undefined
1316
1317返回Array中第一个满足指定测试函数的元素的值,如果所有元素都不满足,则返回undefined。
1318
1319**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1320
1321**系统能力:** SystemCapability.Utils.Lang
1322
1323**参数:**
1324
1325| 参数名    | 类型                                                 | 必填 | 说明                                                   |
1326| --------- | ---------------------------------------------------- | ---- | ------------------------------------------------------ |
1327| predicate | (value: T, index: number, obj: Array\<T>) => boolean | 是   | 一个接受三个参数的函数,用于测试每个元素是否满足条件。当返回值为true时表示元素满足条件,会立即停止遍历,并将该元素作为结果返回。为false时表示元素不满足条件,会继续检查下一个元素,直到找到符合条件的元素或遍历完整个数组。 |
1328
1329**返回值:**
1330
1331| 类型           | 说明                                                         |
1332| -------------- | ------------------------------------------------------------ |
1333| T \| undefined | 第一个满足条件的元素的值;如果所有元素都不满足条件,则返回undefined。 |
1334
1335**错误码:**
1336
1337以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1338
1339| 错误码ID | 错误信息                         |
1340| -------- | -------------------------------- |
1341| 401      | Parameter error.                 |
1342| 10200011 | The find method cannot be bound. |
1343| 10200201 | Concurrent modification error.   |
1344
1345**示例:**
1346
1347```ts
1348let array = new collections.Array<number>(1, 2, 3, 4, 5);
1349let foundValue = array.find((value: number) => value % 2 === 0); // 返回2,第一个偶数元素
1350```
1351
1352## includes
1353
1354includes(searchElement: T, fromIndex?: number): boolean
1355
1356判断Array是否包含指定的元素,并返回一个布尔值。
1357
1358**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1359
1360**系统能力:** SystemCapability.Utils.Lang
1361
1362**参数:**
1363
1364| 参数名        | 类型   | 必填 | 说明                        |
1365| ------------- | ------ | ---- | --------------------------- |
1366| searchElement | T      | 是   | 要搜索的元素。              |
1367| fromIndex     | number | 否   | 开始搜索的索引。默认值为0。 |
1368
1369**返回值:**
1370
1371| 类型    | 说明                                                |
1372| ------- | --------------------------------------------------- |
1373| boolean | 如果Array包含指定的元素,则返回true;否则返回false。 |
1374
1375**错误码:**
1376
1377以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1378
1379| 错误码ID | 错误信息                             |
1380| -------- | ------------------------------------ |
1381| 401      | Parameter error.                     |
1382| 10200011 | The includes method cannot be bound. |
1383| 10200201 | Concurrent modification error.       |
1384
1385**示例:**
1386
1387```ts
1388let array = new collections.Array<number>(1, 2, 3, 4, 5);
1389let includesResult = array.includes(3); // 返回true,因为Array中包含3
1390```
1391
1392## findIndex
1393
1394findIndex(predicate: (value: T, index: number, obj: Array\<T>) => boolean): number
1395
1396返回Array中第一个满足指定测试函数的元素的索引,如果所有元素都不满足,则返回-1。
1397
1398**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1399
1400**系统能力:** SystemCapability.Utils.Lang
1401
1402**参数:**
1403
1404| 参数名    | 类型                                                 | 必填 | 说明                                                   |
1405| --------- | ---------------------------------------------------- | ---- | ------------------------------------------------------ |
1406| predicate | (value: T, index: number, obj: Array\<T>) => boolean | 是   | 一个接受三个参数的函数,用于测试每个元素是否满足条件。当返回值为true时表示当前元素满足条件,会立即停止遍历,并返回该元素的索引。为false时表示当前元素不满足条件,会继续检查下一个元素,直到找到符合条件的元素或遍历完整个数组。 |
1407
1408**返回值:**
1409
1410| 类型   | 说明                                                         |
1411| ------ | ------------------------------------------------------------ |
1412| number | 第一个满足条件的元素的索引;如果所有元素都不满足条件,则返回-1。 |
1413
1414**错误码:**
1415
1416以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1417
1418| 错误码ID | 错误信息                              |
1419| -------- | ------------------------------------- |
1420| 401      | Parameter error.                      |
1421| 10200011 | The findIndex method cannot be bound. |
1422| 10200201 | Concurrent modification error.        |
1423
1424**示例:**
1425
1426```ts
1427let array = new collections.Array<number>(1, 2, 3, 4, 5);
1428let foundIndex = array.findIndex((value: number) => value % 2 === 0); // 返回1,因为2是第一个偶数元素
1429```
1430
1431## fill
1432
1433fill(value: T, start?: number, end?: number): Array\<T>
1434
1435使用指定的值填充Array中指定范围的所有元素。
1436
1437**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1438
1439**系统能力:** SystemCapability.Utils.Lang
1440
1441**参数:**
1442
1443| 参数名 | 类型   | 必填 | 说明                                                   |
1444| ------ | ------ | ---- | ------------------------------------------------------ |
1445| value  | T      | 是   | 要填充的值。                                           |
1446| start  | number | 否   | 开始填充的索引。默认值为0。                            |
1447| end    | number | 否   | 结束填充的索引(不包括该元素)。如果省略,则填充到Array的最后一个元素。 |
1448
1449**返回值:**
1450
1451| 类型      | 说明           |
1452| --------- | -------------- |
1453| Array\<T> | 填充后的Array。 |
1454
1455**错误码:**
1456
1457以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1458
1459| 错误码ID | 错误信息                         |
1460| -------- | -------------------------------- |
1461| 401      | Parameter error.                 |
1462| 10200011 | The fill method cannot be bound. |
1463| 10200201 | Concurrent modification error.   |
1464
1465**示例:**
1466
1467```ts
1468let array = new collections.Array(1, 2, 3, 4, 5);
1469array.fill(0, 1, 3); // 返回[1, 0, 0, 4, 5],因为1到3的索引范围内的元素被替换为0
1470```
1471
1472## shrinkTo
1473
1474shrinkTo(arrayLength: number): void
1475
1476使Array收缩到指定长度。
1477
1478**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1479
1480**系统能力:** SystemCapability.Utils.Lang
1481
1482**参数:**
1483
1484| 参数名 | 类型   | 必填 | 说明                                                   |
1485| ------ | ------ | ---- | ------------------------------------------------------ |
1486| arrayLength  | number  | 是   | Array的新长度。如果arrayLength >= array.length,则Array不变。 |
1487
1488**错误码:**
1489
1490以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1491
1492| 错误码ID | 错误信息                         |
1493| -------- | -------------------------------- |
1494| 401      | Parameter error.                 |
1495| 10200011 | The shrinkTo method cannot be bound. |
1496| 10200201 | Concurrent modification error.   |
1497
1498**示例:**
1499
1500```ts
1501let array1 = new collections.Array(1, 2, 3, 4, 5);
1502array1.shrinkTo(1); // array内容变为:[1]
1503
1504let array2 = new collections.Array(1, 2, 3, 4, 5);
1505array2.shrinkTo(10); // array内容不变
1506```
1507
1508## extendTo
1509
1510extendTo(arrayLength: number, initialValue: T): void
1511
1512使Array扩展到指定长度,扩展的部分使用给定值填充。
1513
1514**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1515
1516**系统能力:** SystemCapability.Utils.Lang
1517
1518**参数:**
1519
1520| 参数名 | 类型   | 必填 | 说明                                                   |
1521| ------ | ------ | ---- | ------------------------------------------------------ |
1522| arrayLength  | number  | 是   | Array的新长度。如果arrayLength <= array.length,则Array不变。 |
1523| initialValue  | T  | 是   | 扩展的部分的填充值。 |
1524
1525**错误码:**
1526
1527以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1528
1529| 错误码ID | 错误信息                         |
1530| -------- | -------------------------------- |
1531| 401      | Parameter error.                 |
1532| 10200011 | The extendTo method cannot be bound. |
1533| 10200201 | Concurrent modification error.   |
1534
1535**示例:**
1536
1537```ts
1538let array1 = new collections.Array(1, 2, 3);
1539array1.extendTo(5, 10); // array内容变为:[1, 2, 3, 10, 10]
1540
1541let array2 = new collections.Array(1, 2, 3);
1542array2.extendTo(1, 10); // array内容不变
1543```
1544
1545## concat
1546
1547concat(...items: ConcatArray\<T>[]): Array\<T>
1548
1549拼接两个或多个数组。
1550
1551**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1552
1553**系统能力:** SystemCapability.Utils.Lang
1554
1555**参数:**
1556
1557| 参数名 | 类型 | 必填 | 说明                               |
1558| ------ | ---- | ---- | ---------------------------------- |
1559| items  | ConcatArray\<T>[]  | 否   | 拼接两个或多个数组。 |
1560
1561**返回值:**
1562
1563| 类型 | 说明                               |
1564| ---- | ---------------------------------- |
1565| Array\<T>  | 拼接后的数组。 |
1566
1567**错误码:**
1568
1569以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1570
1571| 错误码ID | 错误信息                         |
1572| ------- | -------- |
1573| 401 |  Parameter error. Not a valid array. |
1574| 10200011 | The concat method cannot be bound. |
1575| 10200201 | Concurrent modification error.   |
1576
1577**示例:**
1578
1579```ts
1580let array = new collections.Array(1, 2, 3);
1581let array1 = new collections.Array(4, 5, 6);
1582let array2 = new collections.Array(7, 8, 9);
1583
1584let concatArray = array.concat(array1, array2); // concatArray的内容为:[1, 2, 3, 4, 5, 6, 7, 8, 9]
1585```
1586
1587## splice
1588
1589splice(start: number): Array\<T>
1590
1591删除Array中指定位置的元素。
1592
1593**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1594
1595**系统能力:** SystemCapability.Utils.Lang
1596
1597**参数:**
1598
1599| 参数名 | 类型  | 必填 | 说明                                                                |
1600| ----- | ------ | -- | ------------------------------------------------------------------- |
1601| start | number | 是 | 开始索引。如果`-array.length =< start < 0`,从`start + array.length`开始,如果`start < -array.length`,则从0开始。 |
1602
1603**返回值:**
1604
1605| 类型      | 说明                   |
1606| --------- | --------------------- |
1607| Array\<T> | 返回一个新的包含被删除元素的Array对象。如果没有元素被删除,返回一个空的Array对象。 |
1608
1609**错误码:**
1610
1611以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1612
1613| 错误码ID | 错误信息                            |
1614| -------- | ---------------------------------- |
1615| 401      | Parameter error. Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1616| 10200011 | The splice method cannot be bound. |
1617| 10200201 | Concurrent modification error.     |
1618
1619**示例:**
1620
1621```ts
1622let array = new collections.Array<number>(1, 2, 3, 4, 5);
1623let removeArray = array.splice(2); // array内容变为[1, 2],返回[3, 4, 5]
1624```
1625
1626## every<sup>18+</sup>
1627
1628every(predicate: ArrayPredicateFn\<T, Array\<T>>): boolean
1629
1630测试ArkTS Array中的所有元素是否满足指定条件。
1631
1632**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
1633
1634**系统能力:** SystemCapability.Utils.Lang
1635
1636**参数:**
1637| 参数名  | 类型   | 必填 | 说明                                                    |
1638| ------- | ------ | ---- | ----------------------------------------------------- |
1639| predicate | [ArrayPredicateFn](arkts-apis-arkts-collections-Types.md#arraypredicatefn18)\<T, Array\<T>> | 是 | 用于测试的断言函数。|
1640
1641**返回值:**
1642
1643| 类型         | 说明      |
1644| ------------ | --------- |
1645| boolean | 如果所有元素都满足指定条件则返回true,否则返回false。|
1646
1647**错误码:**
1648
1649以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
1650
1651| 错误码ID | 错误信息                                          |
1652| -------- | ------------------------------------------------- |
1653| 10200011 | The every method cannot be bound. |
1654| 10200201 | Concurrent modification error. |
1655
1656**示例:**
1657
1658```ts
1659let newArray: collections.Array<number> = collections.Array.from([-10, 20, -30, 40, -50]);
1660console.info(newArray.every((element: number) => element > 0) + ''); // 预期输出:false
1661```
1662
1663## toLocaleString<sup>18+</sup>
1664
1665toLocaleString(): string
1666
1667根据当前应用的系统地区获取符合当前文化习惯的字符串表示形式,让每个元素调用自己的toLocaleString方法转换为字符串,然后使用逗号将每个元素的结果字符串按照顺序拼接成字符串。
1668
1669**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
1670
1671**系统能力:** SystemCapability.Utils.Lang
1672
1673**返回值:**
1674
1675| 类型         | 说明            |
1676| ---------- | ------------- |
1677| string | 一个包含数组所有元素的字符串。 |
1678
1679**错误码:**
1680
1681以下错误码详细介绍请参考[语言基础类库错误码](errorcode-utils.md)。
1682
1683| 错误码ID    | 错误信息                                       |
1684| -------- | ------------------------------------------ |
1685| 10200011 | The toLocaleString method cannot be bound. |
1686| 10200201 | Concurrent modification error.             |
1687
1688**示例:**
1689
1690```ts
1691// 当前应用所在系统为法国地区
1692let array = new collections.Array<number | string>(1000, 'Test', 53621);
1693let stringArray = array.toLocaleString();
1694console.info(stringArray); // 预期输出:1,000,Test,53,621
1695```
1696
1697## splice
1698
1699splice(start: number, deleteCount: number, ...items: T[]): Array\<T>
1700
1701删除Array中指定位置的元素,需要时在Array的指定位置插入新元素。
1702
1703**原子化服务API**:从API version 12 开始,该接口支持在原子化服务中使用。
1704
1705**系统能力:** SystemCapability.Utils.Lang
1706
1707**参数:**
1708
1709| 参数名       | 类型   | 必填 | 说明                                                                |
1710| ----------- | ------ | --  | ------------------------------------------------------------------- |
1711| start       | number | 是  | 开始索引。如果`-array.length =< start < 0`,从`start + array.length`开始,如果`start < -array.length`,则从0开始。 |
1712| deleteCount | number | 是  | 删除元素的个数, 如果`deleteCount <= 0`,则不删除任何元素。 |
1713| items       | T[]    | 否  | 从`start`位置开始插入的新元素。如果省略,仅删除Array内的指定元素。        |
1714
1715**返回值:**
1716
1717| 类型      | 说明                                  |
1718| --------- | ------------------------------------ |
1719| Array\<T> | 返回一个新的包含被删除元素的Array对象。如果没有元素被删除,返回一个空的Array对象。 |
1720
1721**错误码:**
1722
1723以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1724
1725| 错误码ID | 错误信息                            |
1726| -------- | ---------------------------------- |
1727| 401      | Parameter error. Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |
1728| 10200011 | The splice method cannot be bound. |
1729| 10200201 | Concurrent modification error.     |
1730
1731**示例:**
1732
1733```ts
1734// 例1:
1735let array = new collections.Array<number>(1, 2, 3, 4, 5);
1736let removeArray = array.splice(2, 2); // array内容变为[1, 2, 5],返回[3, 4]
1737```
1738
1739```ts
1740// 例2:
1741let array = new collections.Array<number>(1, 2, 3, 4, 5);
1742let removeArray = array.splice(2, 2, 6, 7, 8); // array内容变为[1, 2, 6, 7, 8, 5],返回[3, 4]
1743```
1744
1745## [Symbol.iterator]
1746
1747[Symbol.iterator]\(): IterableIterator&lt;T&gt;
1748
1749返回一个迭代器,迭代器的每一项都是一个 JavaScript 对象,并返回该对象。
1750
1751> **说明:**
1752>
1753> 本接口不支持在.ets文件中使用。
1754
1755**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1756
1757**系统能力:** SystemCapability.Utils.Lang
1758
1759**返回值:**
1760
1761| 类型                      | 说明             |
1762| ------------------------- | ---------------- |
1763| IterableIterator&lt;T&gt; | 返回一个迭代器。 |
1764
1765**错误码:**
1766
1767以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
1768
1769| 错误码ID | 错误信息                                    |
1770| -------- | ------------------------------------------- |
1771| 10200011 | The Symbol.iterator method cannot be bound. |
1772
1773**示例:**
1774
1775```ts
1776let array= new collections.Array<number>(1, 2, 3, 4);
1777
1778for (let item of array) {
1779  console.info(`value : ${item}`);
1780}
1781```
1782
1783## [index: number]
1784
1785&#91;index: number&#93;: T
1786
1787返回Array指定索引位置的元素。
1788
1789**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1790
1791**系统能力:** SystemCapability.Utils.Lang
1792
1793**参数:**
1794
1795| 参数名    | 类型   | 必填 | 说明                                                            |
1796| ----- | ------ | ---- | ------------------------------------------------------------------ |
1797| index | number | 是   | 所需代码单元的从零开始的索引。当index<0 或者index>=length,则会抛出错误。 |
1798
1799**返回值:**
1800
1801| 类型   | 说明                     |
1802| ----- | ------------------------ |
1803|   T   | Array给定的元素数据类型。  |
1804
1805**错误码**:
1806
1807以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
1808
1809| 错误码ID | 错误信息                             |
1810| ------- | ------------------------------------ |
1811| 401 |        Parameter error.                  |
1812| 10200001 | The value of index is out of range. |
1813
1814**示例:**
1815
1816```ts
1817let array = new collections.Array<number>(1, 2, 4);
1818console.info("Element at index 1: ", array[1]);
1819```
1820