js-apis-plainarray.md 15.6 KB
Newer Older
1
# @ohos.util.PlainArray (非线性容器PlainArray)  
L
linhaoran 已提交
2

zyjhandsome's avatar
zyjhandsome 已提交
3
> **说明:**
L
linhaoran 已提交
4 5
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

6 7 8 9 10 11 12
PlainArray可用于存储具有关联关系的key-value键值对集合,存储元素中key值唯一,key值类型为number类型,每个key对应一个value。

PlainArray依据泛型定义,采用轻量级结构,集合中key值的查找依赖于二分查找算法,然后映射到其他数组中的value值。

PlainArray和[LightWeightMap](js-apis-lightweightmap.md)都是用来存储键值对,且均采用轻量级结构,但PlainArray的key值类型只能为number类型。

**推荐使用场景:** 当需要存储key值为number类型的键值对时,可以使用PlainArray。
L
linhaoran 已提交
13

L
lengchangjing 已提交
14 15 16
文档中存在泛型的使用,涉及以下泛型标记符:<br>
- T: Type, 类

L
linhaoran 已提交
17 18
## 导入模块

19
```ts
20
import PlainArray from '@ohos.util.PlainArray';  
L
linhaoran 已提交
21 22 23 24 25 26 27 28
```



## PlainArray

### 属性

Z
zengyawen 已提交
29 30
**系统能力:** SystemCapability.Utils.Lang

L
liu-ganlin 已提交
31
| 名称 | 类型 | 可读 | 可写 | 说明 |
L
linhaoran 已提交
32
| -------- | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
33
| length | number | 是 | 否 | PlainArray的元素个数。 |
L
linhaoran 已提交
34 35 36 37


### constructor

Z
zengyawen 已提交
38
constructor()
L
linhaoran 已提交
39 40 41

PlainArray的构造函数。

Z
zengyawen 已提交
42 43
**系统能力:** SystemCapability.Utils.Lang

L
liu-ganlin 已提交
44 45 46 47
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
48
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
49 50 51
| -------- | -------- |
| 10200012 | The PlainArray's constructor cannot be directly invoked. |

Z
zengyawen 已提交
52 53
**示例:**

54
```ts
Z
zengyawen 已提交
55 56
let plainArray = new PlainArray();
```
L
linhaoran 已提交
57 58 59 60


### isEmpty

Z
zengyawen 已提交
61
isEmpty(): boolean
L
linhaoran 已提交
62 63 64

判断该容器是否为空。

Z
zengyawen 已提交
65 66
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
67 68 69 70 71
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 为空返回true, 不为空返回false。 |
L
linhaoran 已提交
72

L
liu-ganlin 已提交
73 74 75 76
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
77
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
78 79 80
| -------- | -------- |
| 10200011 | The isEmpty method cannot be bound. |

Z
zengyawen 已提交
81 82
**示例:**

83
```ts
Z
zengyawen 已提交
84
const plainArray = new PlainArray();
85
let result = plainArray.isEmpty();
Z
zengyawen 已提交
86
```
L
linhaoran 已提交
87 88 89 90


### has

Z
zengyawen 已提交
91
has(key: number): boolean
L
linhaoran 已提交
92 93 94

判断此容器中是否含有该指定key。

Z
zengyawen 已提交
95 96
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
97 98 99 100
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
101
| key | number | 是 | 指定key。 |
Z
zengyawen 已提交
102 103

**返回值:**
L
linhaoran 已提交
104

Z
zengyawen 已提交
105 106
| 类型 | 说明 |
| -------- | -------- |
107
| boolean | 包含指定key返回true,否则返回false。 |
L
linhaoran 已提交
108

L
liu-ganlin 已提交
109 110 111 112
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
113
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
114 115 116
| -------- | -------- |
| 10200011 | The has method cannot be bound. |

Z
zengyawen 已提交
117 118
**示例:**

119
```ts
Z
zengyawen 已提交
120 121
let plainArray = new PlainArray();
plainArray.has(1);
L
lengchangjing 已提交
122
plainArray.add(1, "squirrel");
123
let result1 = plainArray.has(1);
Z
zengyawen 已提交
124
```
L
linhaoran 已提交
125 126 127 128


### get

Z
zengyawen 已提交
129
get(key: number): T
L
linhaoran 已提交
130 131 132

获取指定key所对应的value。

Z
zengyawen 已提交
133 134
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
135 136 137 138 139 140 141
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | number | 是 | 查找的指定key。 |

**返回值:**
L
linhaoran 已提交
142

Z
zengyawen 已提交
143 144 145
| 类型 | 说明 |
| -------- | -------- |
| T | 返回key映射的value值。 |
L
linhaoran 已提交
146

L
liu-ganlin 已提交
147 148 149 150
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
151
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
152 153 154
| -------- | -------- |
| 10200011 | The get method cannot be bound. |

Z
zengyawen 已提交
155 156
**示例:**

157
```ts
Z
zengyawen 已提交
158
let plainArray = new PlainArray();
L
lengchangjing 已提交
159 160
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
161
let result = plainArray.get(1);
Z
zengyawen 已提交
162
```
L
linhaoran 已提交
163 164 165 166


### getIndexOfKey

167
getIndexOfKey(key: number): number
L
linhaoran 已提交
168

169
查找指定key第一次出现的下标值,如果没有找到该key返回-1。
Z
zengyawen 已提交
170

Z
zengyawen 已提交
171 172
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
173 174 175 176
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
177
| key | number | 是 | 指定key。 |
L
linhaoran 已提交
178

Z
zengyawen 已提交
179
**返回值:**
L
linhaoran 已提交
180

Z
zengyawen 已提交
181 182
| 类型 | 说明 |
| -------- | -------- |
183
| number | 返回指定key第一次出现时的下标值,查找失败返回-1。 |
L
linhaoran 已提交
184

L
liu-ganlin 已提交
185 186 187 188
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
189
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
190 191 192
| -------- | -------- |
| 10200011 | The getIndexOfKey method cannot be bound. |

Z
zengyawen 已提交
193 194
**示例:**

195
```ts
Z
zengyawen 已提交
196
let plainArray = new PlainArray();
L
lengchangjing 已提交
197 198
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
199
let result = plainArray.getIndexOfKey(2);
Z
zengyawen 已提交
200
```
L
linhaoran 已提交
201 202 203 204


### getIndexOfValue

205
getIndexOfValue(value: T): number
L
linhaoran 已提交
206

207
查找指定value元素第一次出现的下标值,如果没有找到该value元素返回-1。
Z
zengyawen 已提交
208

Z
zengyawen 已提交
209 210
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
211 212 213 214
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
215
| value | T | 是 | 指定value元素。 |
L
linhaoran 已提交
216

Z
zengyawen 已提交
217
**返回值:**
L
linhaoran 已提交
218

Z
zengyawen 已提交
219 220
| 类型 | 说明 |
| -------- | -------- |
221
| number | 返回指定value元素第一次出现时的下标值,查找失败返回-1。 |
L
linhaoran 已提交
222

L
liu-ganlin 已提交
223 224 225 226
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
227
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
228 229 230
| -------- | -------- |
| 10200011 | The getIndexOfValue method cannot be bound. |

Z
zengyawen 已提交
231 232
**示例:**

233
```ts
Z
zengyawen 已提交
234
let plainArray = new PlainArray();
L
lengchangjing 已提交
235 236 237
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
let result = plainArray.getIndexOfValue("squirrel");
Z
zengyawen 已提交
238
```
L
linhaoran 已提交
239 240 241 242


### getKeyAt

243
getKeyAt(index: number): number
L
linhaoran 已提交
244

Z
zengyawen 已提交
245 246
查找指定下标的元素键值对中key值。

Z
zengyawen 已提交
247 248
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
249 250 251 252
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
253
| index | number | 是 | 指定下标。 |
L
linhaoran 已提交
254

Z
zengyawen 已提交
255
**返回值:**
L
linhaoran 已提交
256

Z
zengyawen 已提交
257 258
| 类型 | 说明 |
| -------- | -------- |
259
| number | 返回该下标对应的元素键值对中key值,失败返回-1。 |
L
linhaoran 已提交
260

L
liu-ganlin 已提交
261 262 263 264
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
265
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
266 267 268
| -------- | -------- |
| 10200011 | The getKeyAt method cannot be bound. |

Z
zengyawen 已提交
269 270
**示例:**

271
```ts
Z
zengyawen 已提交
272
let plainArray = new PlainArray();
L
lengchangjing 已提交
273 274
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
275
let result = plainArray.getKeyAt(1);
Z
zengyawen 已提交
276
```
L
linhaoran 已提交
277

278 279 280 281 282 283
### getValueAt

getValueAt(index: number): T

查找指定下标元素键值对中Value值,否则返回undefined。

Z
zengyawen 已提交
284 285
**系统能力:** SystemCapability.Utils.Lang

286 287 288 289 290 291 292 293 294 295 296 297
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | index | number | 是 | 指定下标。 |

**返回值:**

  | 类型 | 说明 |
  | -------- | -------- |
  | T | 返回该下标对应的元素键值对中key值,失败返回undefined。 |

L
liu-ganlin 已提交
298 299 300 301
  **错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
302
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
303 304
| -------- | -------- |
| 10200011 | The getValueAt method cannot be bound. |
L
liu-ganlin 已提交
305
| 10200001 | The parameter value is out of range. |
L
liu-ganlin 已提交
306

307 308
**示例:**

L
liu-ganlin 已提交
309 310 311 312 313 314
```ts
let plainArray = new PlainArray();
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
let result = plainArray.getValueAt(1);
```
L
linhaoran 已提交
315 316 317

### clone

Z
zengyawen 已提交
318 319
clone(): PlainArray&lt;T&gt;

320
克隆一个实例,并返回克隆后的实例。修改克隆后的实例并不会影响原实例。
L
linhaoran 已提交
321

Z
zengyawen 已提交
322 323
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
324
**返回值:**
L
linhaoran 已提交
325

Z
zengyawen 已提交
326 327 328
| 类型 | 说明 |
| -------- | -------- |
| PlainArray&lt;T&gt; | 返回新的对象实例。 |
L
linhaoran 已提交
329

L
liu-ganlin 已提交
330 331 332 333
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
334
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
335 336 337
| -------- | -------- |
| 10200011 | The clone method cannot be bound. |

Z
zengyawen 已提交
338 339
**示例:**

340
```ts
341
let plainArray = new PlainArray();
L
lengchangjing 已提交
342 343
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
Z
zengyawen 已提交
344 345
let newPlainArray = plainArray.clone();
```
L
linhaoran 已提交
346 347 348 349


### add

350
add(key: number, value: T): void
L
linhaoran 已提交
351 352 353

向容器中添加一组数据。

Z
zengyawen 已提交
354 355
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
356 357 358 359 360 361 362
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | number | 是 | 添加成员数据的键名。 |
| value | T | 是 | 添加成员数据的值。 |

L
liu-ganlin 已提交
363 364 365 366
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
367
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
368 369 370
| -------- | -------- |
| 10200011 | The add method cannot be bound. |

Z
zengyawen 已提交
371 372
**示例:**

373
```ts
Z
zengyawen 已提交
374
let plainArray = new PlainArray();
L
lengchangjing 已提交
375
plainArray.add(1, "squirrel");
Z
zengyawen 已提交
376
```
L
linhaoran 已提交
377 378 379 380


### remove

Z
zengyawen 已提交
381
remove(key: number): T
L
linhaoran 已提交
382

383
删除指定key对应元素。
L
linhaoran 已提交
384

Z
zengyawen 已提交
385 386
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
387 388 389 390
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
391
| key | number | 是 | 指定key。 |
Z
zengyawen 已提交
392 393

**返回值:**
L
linhaoran 已提交
394

Z
zengyawen 已提交
395 396 397
| 类型 | 说明 |
| -------- | -------- |
| T | 返回删除元素的值。 |
L
linhaoran 已提交
398

L
liu-ganlin 已提交
399 400 401 402
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
403
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
404 405 406
| -------- | -------- |
| 10200011 | The remove method cannot be bound. |

Z
zengyawen 已提交
407 408
**示例:**

409
```ts
Z
zengyawen 已提交
410
let plainArray = new PlainArray();
L
lengchangjing 已提交
411 412
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
413
let result = plainArray.remove(2);
Z
zengyawen 已提交
414
```
L
linhaoran 已提交
415 416 417 418


### removeAt

419
removeAt(index: number): T
L
linhaoran 已提交
420

421
删除指定下标对应的元素。
L
linhaoran 已提交
422

Z
zengyawen 已提交
423 424
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
425 426 427 428 429 430 431
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| index | number | 是 | 指定元素下标。 |

**返回值:**
L
linhaoran 已提交
432

Z
zengyawen 已提交
433 434
| 类型 | 说明 |
| -------- | -------- |
435
| T | 返回删除的元素。 |
L
linhaoran 已提交
436

L
liu-ganlin 已提交
437 438 439 440
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
441
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
442 443 444
| -------- | -------- |
| 10200011 | The removeAt method cannot be bound. |

Z
zengyawen 已提交
445 446
**示例:**

447
```ts
Z
zengyawen 已提交
448
let plainArray = new PlainArray();
L
lengchangjing 已提交
449 450
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
451
let result = plainArray.removeAt(1);
Z
zengyawen 已提交
452
```
L
linhaoran 已提交
453 454 455 456


### removeRangeFrom

Z
zengyawen 已提交
457
removeRangeFrom(index: number, size: number): number
L
linhaoran 已提交
458 459 460

删除一定范围内的元素。

Z
zengyawen 已提交
461 462
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
463 464 465 466 467 468 469 470
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| index | number | 是 | 删除元素的起始下标。 |
| size | number | 是 | 期望删除元素个数。 |

**返回值:**
L
linhaoran 已提交
471

Z
zengyawen 已提交
472 473 474
| 类型 | 说明 |
| -------- | -------- |
| number | 实际删除元素个数。 |
L
linhaoran 已提交
475

L
liu-ganlin 已提交
476 477 478 479
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
480
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
481 482
| -------- | -------- |
| 10200011 | The removeRangeFrom method cannot be bound. |
L
liu-ganlin 已提交
483
| 10200001 | The parameter value is out of range. |
L
liu-ganlin 已提交
484

Z
zengyawen 已提交
485 486
**示例:**

487
```ts
Z
zengyawen 已提交
488
let plainArray = new PlainArray();
L
lengchangjing 已提交
489 490
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
491
let result = plainArray.removeRangeFrom(1, 3);
Z
zengyawen 已提交
492
```
L
linhaoran 已提交
493 494 495 496


### setValueAt

497
setValueAt(index: number, value: T): void
L
linhaoran 已提交
498

499
替换容器中指定下标对应键值对中的键值。
L
linhaoran 已提交
500

Z
zengyawen 已提交
501 502
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
503
**参数:**
L
linhaoran 已提交
504

Z
zengyawen 已提交
505 506 507
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| index | number | 是 | 指定替换数据下标。 |
508
| value | T | 是 | 替换键值对中的值。 |
L
linhaoran 已提交
509

L
liu-ganlin 已提交
510 511 512 513
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
514
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
515 516
| -------- | -------- |
| 10200011 | The setValueAt method cannot be bound. |
L
liu-ganlin 已提交
517
| 10200001 | The parameter value is out of range. |
L
liu-ganlin 已提交
518

Z
zengyawen 已提交
519 520
**示例:**

521
```ts
Z
zengyawen 已提交
522
let plainArray = new PlainArray();
L
lengchangjing 已提交
523 524
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
Z
zengyawen 已提交
525 526
plainArray.setValueAt(1, 3546);
```
L
linhaoran 已提交
527 528 529 530


### toString

Z
zengyawen 已提交
531
toString(): String
L
linhaoran 已提交
532 533 534

获取包含容器中所有键和值的字符串。

Z
zengyawen 已提交
535 536
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
537 538 539 540 541 542
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| String | 返回对应字符串。 |

L
liu-ganlin 已提交
543 544 545 546
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
547
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
548 549 550
| -------- | -------- |
| 10200011 | The toString method cannot be bound. |

Z
zengyawen 已提交
551
**示例:**
L
linhaoran 已提交
552

553
```ts
Z
zengyawen 已提交
554
let plainArray = new PlainArray();
L
lengchangjing 已提交
555 556
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
557
let result = plainArray.toString();
Z
zengyawen 已提交
558
```
L
linhaoran 已提交
559 560 561 562


### clear

Z
zengyawen 已提交
563
clear(): void
L
linhaoran 已提交
564

Z
zengyawen 已提交
565
清除容器中的所有元素,并把length置为0。
L
linhaoran 已提交
566

Z
zengyawen 已提交
567 568
**系统能力:** SystemCapability.Utils.Lang

L
liu-ganlin 已提交
569 570 571 572
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
573
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
574 575 576
| -------- | -------- |
| 10200011 | The clear method cannot be bound. |

Z
zengyawen 已提交
577 578
**示例:**

579
```ts
Z
zengyawen 已提交
580
let plainArray = new PlainArray();
L
lengchangjing 已提交
581 582
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
Z
zengyawen 已提交
583 584
plainArray.clear();
```
L
linhaoran 已提交
585 586 587 588


### forEach

589
forEach(callbackFn: (value: T, index?: number, PlainArray?: PlainArray&lt;T&gt;) => void, thisArg?: Object): void
L
linhaoran 已提交
590 591 592

通过回调函数来遍历实例对象上的元素以及元素对应的下标。

Z
zengyawen 已提交
593 594
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
595 596 597 598
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
599
| callbackFn | function | 是 | 回调函数。 |
Z
zengyawen 已提交
600 601 602 603 604 605
| thisArg | Object | 否 | callbackfn被调用时用作this值。 |

callbackfn的参数说明:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| value | T | 是 | 当前遍历到的元素键值对的值。 |
606
| index | number | 否 | 当前遍历到的元素键值对的键。 |
607
| PlainArray | PlainArray&lt;T&gt;| 否 | 当前调用forEach方法的实例对象。 |
Z
zengyawen 已提交
608

L
liu-ganlin 已提交
609 610 611 612
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
613
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
614 615 616
| -------- | -------- |
| 10200011 | The forEach method cannot be bound. |

Z
zengyawen 已提交
617 618
**示例:**

619
```ts
Z
zengyawen 已提交
620
let plainArray = new PlainArray();
L
lengchangjing 已提交
621 622
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
623 624
plainArray.forEach((value, index) => {
  console.log("value:" + value, index);
Z
zengyawen 已提交
625 626
});
```
L
linhaoran 已提交
627 628 629 630


### [Symbol.iterator]

Z
zengyawen 已提交
631 632
[Symbol.iterator]\(): IterableIterator&lt;[number, T]&gt;

L
liu-ganlin 已提交
633
返回一个包含key-value键值对的迭代器对象,其中key是number类型。
Z
zengyawen 已提交
634

Z
zengyawen 已提交
635 636
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
637 638 639 640
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
641
| IterableIterator&lt;[number, T]&gt; | 返回一个迭代器。 |
Z
zengyawen 已提交
642

L
liu-ganlin 已提交
643 644 645 646
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
647
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
648 649 650
| -------- | -------- |
| 10200011 | The Symbol.iterator method cannot be bound. |

Z
zengyawen 已提交
651 652
**示例:**

653
```ts
Z
zengyawen 已提交
654
let plainArray = new PlainArray();
L
lengchangjing 已提交
655 656
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
Z
zengyawen 已提交
657 658 659

// 使用方法一:
for (let item of plainArray) { 
L
liu-ganlin 已提交
660
  console.log("key:" + item[0]);
661
  console.log("value:" + item[1]);
Z
zengyawen 已提交
662 663 664 665 666 667
}

// 使用方法二:
let iter = plainArray[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {
L
liu-ganlin 已提交
668
  console.log("key:" + temp[0]);
669
  console.log("value:" + temp[1]);
Z
zengyawen 已提交
670 671 672
  temp = iter.next().value;
}
```