js-apis-plainarray.md 11.3 KB
Newer Older
L
linhaoran 已提交
1 2 3 4 5
# 非线性容器PlainArray  

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从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
linhaoran 已提交
31 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

Z
zengyawen 已提交
44 45
**示例:**

46
```ts
Z
zengyawen 已提交
47 48
let plainArray = new PlainArray();
```
L
linhaoran 已提交
49 50 51 52


### isEmpty

Z
zengyawen 已提交
53
isEmpty(): boolean
L
linhaoran 已提交
54 55 56

判断该容器是否为空。

Z
zengyawen 已提交
57 58
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
59 60 61 62 63
**返回值:**

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

Z
zengyawen 已提交
65 66
**示例:**

67
```ts
Z
zengyawen 已提交
68
const plainArray = new PlainArray();
69
let result = plainArray.isEmpty();
Z
zengyawen 已提交
70
```
L
linhaoran 已提交
71 72 73 74


### has

Z
zengyawen 已提交
75
has(key: number): boolean
L
linhaoran 已提交
76 77 78

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

Z
zengyawen 已提交
79 80
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
81 82 83 84
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
85
| key | number | 是 | 指定key。 |
Z
zengyawen 已提交
86 87

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

Z
zengyawen 已提交
89 90
| 类型 | 说明 |
| -------- | -------- |
91
| boolean | 包含指定key返回true,否则返回false。 |
L
linhaoran 已提交
92

Z
zengyawen 已提交
93 94
**示例:**

95
```ts
Z
zengyawen 已提交
96 97
let plainArray = new PlainArray();
plainArray.has(1);
L
lengchangjing 已提交
98
plainArray.add(1, "squirrel");
99
let result1 = plainArray.has(1);
Z
zengyawen 已提交
100
```
L
linhaoran 已提交
101 102 103 104


### get

Z
zengyawen 已提交
105
get(key: number): T
L
linhaoran 已提交
106 107 108

获取指定key所对应的value。

Z
zengyawen 已提交
109 110
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
111 112 113 114 115 116 117
**参数:**

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

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

Z
zengyawen 已提交
119 120 121
| 类型 | 说明 |
| -------- | -------- |
| T | 返回key映射的value值。 |
L
linhaoran 已提交
122

Z
zengyawen 已提交
123 124
**示例:**

125
```ts
Z
zengyawen 已提交
126
let plainArray = new PlainArray();
L
lengchangjing 已提交
127 128
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
129
let result = plainArray.get(1);
Z
zengyawen 已提交
130
```
L
linhaoran 已提交
131 132 133 134


### getIndexOfKey

135
getIndexOfKey(key: number): number
L
linhaoran 已提交
136

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

Z
zengyawen 已提交
139 140
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
141 142 143 144
**参数:**

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

Z
zengyawen 已提交
147
**返回值:**
L
linhaoran 已提交
148

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

Z
zengyawen 已提交
153 154
**示例:**

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


### getIndexOfValue

165
getIndexOfValue(value: T): number
L
linhaoran 已提交
166

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

Z
zengyawen 已提交
169 170
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
171 172 173 174
**参数:**

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

Z
zengyawen 已提交
177
**返回值:**
L
linhaoran 已提交
178

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

Z
zengyawen 已提交
183 184
**示例:**

185
```ts
Z
zengyawen 已提交
186
let plainArray = new PlainArray();
L
lengchangjing 已提交
187 188 189
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
let result = plainArray.getIndexOfValue("squirrel");
Z
zengyawen 已提交
190
```
L
linhaoran 已提交
191 192 193 194


### getKeyAt

195
getKeyAt(index: number): number
L
linhaoran 已提交
196

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

Z
zengyawen 已提交
199 200
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
201 202 203 204
**参数:**

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

Z
zengyawen 已提交
207
**返回值:**
L
linhaoran 已提交
208

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

Z
zengyawen 已提交
213 214
**示例:**

215
```ts
Z
zengyawen 已提交
216
let plainArray = new PlainArray();
L
lengchangjing 已提交
217 218
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
219
let result = plainArray.getKeyAt(1);
Z
zengyawen 已提交
220
```
L
linhaoran 已提交
221

222 223 224 225 226 227
### getValueAt

getValueAt(index: number): T

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

Z
zengyawen 已提交
228 229
**系统能力:** SystemCapability.Utils.Lang

230 231 232 233 234 235 236 237 238 239 240 241 242 243
**参数:**

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

**返回值:**

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

**示例:**

244
  ```ts
245
  let plainArray = new PlainArray();
L
lengchangjing 已提交
246 247
  plainArray.add(1, "squirrel");
  plainArray.add(2, "sparrow");
248 249
  let result = plainArray.getKeyAt(1);
  ```
L
linhaoran 已提交
250 251 252

### clone

Z
zengyawen 已提交
253 254
clone(): PlainArray&lt;T&gt;

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

Z
zengyawen 已提交
257 258
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
259
**返回值:**
L
linhaoran 已提交
260

Z
zengyawen 已提交
261 262 263
| 类型 | 说明 |
| -------- | -------- |
| PlainArray&lt;T&gt; | 返回新的对象实例。 |
L
linhaoran 已提交
264

Z
zengyawen 已提交
265 266
**示例:**

267
```ts
268
let plainArray = new PlainArray();
L
lengchangjing 已提交
269 270
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
Z
zengyawen 已提交
271 272
let newPlainArray = plainArray.clone();
```
L
linhaoran 已提交
273 274 275 276


### add

277
add(key: number, value: T): void
L
linhaoran 已提交
278 279 280

向容器中添加一组数据。

Z
zengyawen 已提交
281 282
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
283 284 285 286 287 288 289 290 291
**参数:**

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

**示例:**

292
```ts
Z
zengyawen 已提交
293
let plainArray = new PlainArray();
L
lengchangjing 已提交
294
plainArray.add(1, "squirrel");
Z
zengyawen 已提交
295
```
L
linhaoran 已提交
296 297 298 299


### remove

Z
zengyawen 已提交
300
remove(key: number): T
L
linhaoran 已提交
301

302
删除指定key对应元素。
L
linhaoran 已提交
303

Z
zengyawen 已提交
304 305
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
306 307 308 309
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
310
| key | number | 是 | 指定key。 |
Z
zengyawen 已提交
311 312

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

Z
zengyawen 已提交
314 315 316
| 类型 | 说明 |
| -------- | -------- |
| T | 返回删除元素的值。 |
L
linhaoran 已提交
317

Z
zengyawen 已提交
318 319
**示例:**

320
```ts
Z
zengyawen 已提交
321
let plainArray = new PlainArray();
L
lengchangjing 已提交
322 323
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
Z
zengyawen 已提交
324
plainArray.remove(2);
325
let result = plainArray.remove(2);
Z
zengyawen 已提交
326
```
L
linhaoran 已提交
327 328 329 330


### removeAt

331
removeAt(index: number): T
L
linhaoran 已提交
332

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

Z
zengyawen 已提交
335 336
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
337 338 339 340 341 342 343
**参数:**

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

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

Z
zengyawen 已提交
345 346
| 类型 | 说明 |
| -------- | -------- |
347
| T | 返回删除的元素。 |
L
linhaoran 已提交
348

Z
zengyawen 已提交
349 350
**示例:**

351
```ts
Z
zengyawen 已提交
352
let plainArray = new PlainArray();
L
lengchangjing 已提交
353 354
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
Z
zengyawen 已提交
355
plainArray.removeAt(1);
356
let result = plainArray.removeAt(1);
Z
zengyawen 已提交
357
```
L
linhaoran 已提交
358 359 360 361


### removeRangeFrom

Z
zengyawen 已提交
362
removeRangeFrom(index: number, size: number): number
L
linhaoran 已提交
363 364 365

删除一定范围内的元素。

Z
zengyawen 已提交
366 367
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
368 369 370 371 372 373 374 375
**参数:**

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

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

Z
zengyawen 已提交
377 378 379
| 类型 | 说明 |
| -------- | -------- |
| number | 实际删除元素个数。 |
L
linhaoran 已提交
380

Z
zengyawen 已提交
381 382
**示例:**

383
```ts
Z
zengyawen 已提交
384
let plainArray = new PlainArray();
L
lengchangjing 已提交
385 386
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
387
let result = plainArray.removeRangeFrom(1, 3);
Z
zengyawen 已提交
388
```
L
linhaoran 已提交
389 390 391 392


### setValueAt

393
setValueAt(index: number, value: T): void
L
linhaoran 已提交
394

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

Z
zengyawen 已提交
397 398
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
399
**参数:**
L
linhaoran 已提交
400

Z
zengyawen 已提交
401 402 403
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| index | number | 是 | 指定替换数据下标。 |
404
| value | T | 是 | 替换键值对中的值。 |
L
linhaoran 已提交
405

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

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


### toString

Z
zengyawen 已提交
418
toString(): String
L
linhaoran 已提交
419 420 421

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

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

Z
zengyawen 已提交
424 425 426 427 428 429 430
**返回值:**

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

**示例:**
L
linhaoran 已提交
431

432
```ts
Z
zengyawen 已提交
433
let plainArray = new PlainArray();
L
lengchangjing 已提交
434 435
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
436
let result = plainArray.toString();
Z
zengyawen 已提交
437
```
L
linhaoran 已提交
438 439 440 441


### clear

Z
zengyawen 已提交
442
clear(): void
L
linhaoran 已提交
443

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

Z
zengyawen 已提交
446 447
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
448 449
**示例:**

450
```ts
Z
zengyawen 已提交
451
let plainArray = new PlainArray();
L
lengchangjing 已提交
452 453
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
Z
zengyawen 已提交
454 455
plainArray.clear();
```
L
linhaoran 已提交
456 457 458 459


### forEach

460
forEach(callbackfn: (value: T, index?: number, PlainArray?: PlainArray&lt;T&gt;) => void, thisArg?: Object): void
L
linhaoran 已提交
461 462 463

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

Z
zengyawen 已提交
464 465
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
466 467 468 469 470 471 472 473 474 475 476
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| callbackfn | function | 是 | 回调函数。 |
| thisArg | Object | 否 | callbackfn被调用时用作this值。 |

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

**示例:**

482
```ts
Z
zengyawen 已提交
483
let plainArray = new PlainArray();
L
lengchangjing 已提交
484 485
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
486 487
plainArray.forEach((value, index) => {
  console.log("value:" + value, index);
Z
zengyawen 已提交
488 489
});
```
L
linhaoran 已提交
490 491 492 493


### [Symbol.iterator]

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

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

Z
zengyawen 已提交
498 499
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
500 501 502 503
**返回值:**

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

**示例:**

508
```ts
Z
zengyawen 已提交
509
let plainArray = new PlainArray();
L
lengchangjing 已提交
510 511
plainArray.add(1, "squirrel");
plainArray.add(2, "sparrow");
Z
zengyawen 已提交
512 513 514

// 使用方法一:
for (let item of plainArray) { 
L
liu-ganlin 已提交
515
  console.log("key:" + item[0]);
516
  console.log("value:" + item[1]);
Z
zengyawen 已提交
517 518 519 520 521 522
}

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