js-apis-plainarray.md 11.2 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 14 15

## 导入模块

16
```ts
17
import PlainArray from '@ohos.util.PlainArray';  
L
linhaoran 已提交
18 19 20 21 22 23 24 25
```



## PlainArray

### 属性

Z
zengyawen 已提交
26 27
**系统能力:** SystemCapability.Utils.Lang

L
linhaoran 已提交
28 29
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
30
| length | number | 是 | 否 | PlainArray的元素个数。 |
L
linhaoran 已提交
31 32 33 34


### constructor

Z
zengyawen 已提交
35
constructor()
L
linhaoran 已提交
36 37 38

PlainArray的构造函数。

Z
zengyawen 已提交
39 40
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
41 42
**示例:**

43
```ts
Z
zengyawen 已提交
44 45
let plainArray = new PlainArray();
```
L
linhaoran 已提交
46 47 48 49


### isEmpty

Z
zengyawen 已提交
50
isEmpty(): boolean
L
linhaoran 已提交
51 52 53

判断该容器是否为空。

Z
zengyawen 已提交
54 55
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
56 57 58 59 60
**返回值:**

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

Z
zengyawen 已提交
62 63
**示例:**

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


### has

Z
zengyawen 已提交
72
has(key: number): boolean
L
linhaoran 已提交
73 74 75

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

Z
zengyawen 已提交
76 77
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
78 79 80 81
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
82
| key | number | 是 | 指定key。 |
Z
zengyawen 已提交
83 84

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

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

Z
zengyawen 已提交
90 91
**示例:**

92
```ts
Z
zengyawen 已提交
93 94 95
let plainArray = new PlainArray();
plainArray.has(1);
plainArray.add(1, "sddfhf");
96
let result1 = plainArray.has(1);
Z
zengyawen 已提交
97
```
L
linhaoran 已提交
98 99 100 101


### get

Z
zengyawen 已提交
102
get(key: number): T
L
linhaoran 已提交
103 104 105

获取指定key所对应的value。

Z
zengyawen 已提交
106 107
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
108 109 110 111 112 113 114
**参数:**

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

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

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

Z
zengyawen 已提交
120 121
**示例:**

122
```ts
Z
zengyawen 已提交
123 124 125
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
126
let result = plainArray.get(1);
Z
zengyawen 已提交
127
```
L
linhaoran 已提交
128 129 130 131


### getIndexOfKey

132
getIndexOfKey(key: number): number
L
linhaoran 已提交
133

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

Z
zengyawen 已提交
136 137
**系统能力:** SystemCapability.Utils.Lang

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

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

Z
zengyawen 已提交
144
**返回值:**
L
linhaoran 已提交
145

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

Z
zengyawen 已提交
150 151
**示例:**

152
```ts
Z
zengyawen 已提交
153 154 155
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
156
let result = plainArray.getIndexOfKey("sdfs");
Z
zengyawen 已提交
157
```
L
linhaoran 已提交
158 159 160 161


### getIndexOfValue

162
getIndexOfValue(value: T): number
L
linhaoran 已提交
163

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

Z
zengyawen 已提交
166 167
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
168 169 170 171
**参数:**

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

Z
zengyawen 已提交
174
**返回值:**
L
linhaoran 已提交
175

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

Z
zengyawen 已提交
180 181
**示例:**

182
```ts
Z
zengyawen 已提交
183 184 185
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
186
let result = plainArray.getIndexOfValue("sddfhf");
Z
zengyawen 已提交
187
```
L
linhaoran 已提交
188 189 190 191


### getKeyAt

192
getKeyAt(index: number): number
L
linhaoran 已提交
193

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

Z
zengyawen 已提交
196 197
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
198 199 200 201
**参数:**

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

Z
zengyawen 已提交
204
**返回值:**
L
linhaoran 已提交
205

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

Z
zengyawen 已提交
210 211
**示例:**

212
```ts
Z
zengyawen 已提交
213 214 215
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
216
let result = plainArray.getKeyAt(1);
Z
zengyawen 已提交
217
```
L
linhaoran 已提交
218

219 220 221 222 223 224
### getValueAt

getValueAt(index: number): T

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

Z
zengyawen 已提交
225 226
**系统能力:** SystemCapability.Utils.Lang

227 228 229 230 231 232 233 234 235 236 237 238 239 240
**参数:**

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

**返回值:**

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

**示例:**

241
  ```ts
242 243 244 245 246
  let plainArray = new PlainArray();
  plainArray.add(1, "sddfhf");
  plainArray.add(2, "sffdfhf");
  let result = plainArray.getKeyAt(1);
  ```
L
linhaoran 已提交
247 248 249

### clone

Z
zengyawen 已提交
250 251
clone(): PlainArray<T>

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

Z
zengyawen 已提交
254 255
**系统能力:** SystemCapability.Utils.Lang

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

Z
zengyawen 已提交
258 259 260
| 类型 | 说明 |
| -------- | -------- |
| PlainArray<T> | 返回新的对象实例。 |
L
linhaoran 已提交
261

Z
zengyawen 已提交
262 263
**示例:**

264
```ts
265
let plainArray = new PlainArray();
Z
zengyawen 已提交
266 267 268 269
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
let newPlainArray = plainArray.clone();
```
L
linhaoran 已提交
270 271 272 273


### add

274
add(key: number, value: T): void
L
linhaoran 已提交
275 276 277

向容器中添加一组数据。

Z
zengyawen 已提交
278 279
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
280 281 282 283 284 285 286 287 288
**参数:**

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

**示例:**

289
```ts
Z
zengyawen 已提交
290 291 292
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
```
L
linhaoran 已提交
293 294 295 296


### remove

Z
zengyawen 已提交
297
remove(key: number): T
L
linhaoran 已提交
298

299
删除指定key对应元素。
L
linhaoran 已提交
300

Z
zengyawen 已提交
301 302
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
303 304 305 306
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
307
| key | number | 是 | 指定key。 |
Z
zengyawen 已提交
308 309

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

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

Z
zengyawen 已提交
315 316
**示例:**

317
```ts
Z
zengyawen 已提交
318 319 320 321
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
plainArray.remove(2);
322
let result = plainArray.remove(2);
Z
zengyawen 已提交
323
```
L
linhaoran 已提交
324 325 326 327


### removeAt

328
removeAt(index: number): T
L
linhaoran 已提交
329

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

Z
zengyawen 已提交
332 333
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
334 335 336 337 338 339 340
**参数:**

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

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

Z
zengyawen 已提交
342 343
| 类型 | 说明 |
| -------- | -------- |
344
| T | 返回删除的元素。 |
L
linhaoran 已提交
345

Z
zengyawen 已提交
346 347
**示例:**

348
```ts
Z
zengyawen 已提交
349 350 351 352
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
plainArray.removeAt(1);
353
let result = plainArray.removeAt(1);
Z
zengyawen 已提交
354
```
L
linhaoran 已提交
355 356 357 358


### removeRangeFrom

Z
zengyawen 已提交
359
removeRangeFrom(index: number, size: number): number
L
linhaoran 已提交
360 361 362

删除一定范围内的元素。

Z
zengyawen 已提交
363 364
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
365 366 367 368 369 370 371 372
**参数:**

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

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

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

Z
zengyawen 已提交
378 379
**示例:**

380
```ts
Z
zengyawen 已提交
381 382 383
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
384
let result = plainArray.removeRangeFrom(1, 3);
Z
zengyawen 已提交
385
```
L
linhaoran 已提交
386 387 388 389


### setValueAt

390
setValueAt(index: number, value: T): void
L
linhaoran 已提交
391

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

Z
zengyawen 已提交
394 395
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
396
**参数:**
L
linhaoran 已提交
397

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

Z
zengyawen 已提交
403 404
**示例:**

405
```ts
Z
zengyawen 已提交
406 407 408 409 410
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
plainArray.setValueAt(1, 3546);
```
L
linhaoran 已提交
411 412 413 414


### toString

Z
zengyawen 已提交
415
toString(): String
L
linhaoran 已提交
416 417 418

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

Z
zengyawen 已提交
419 420
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
421 422 423 424 425 426 427
**返回值:**

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

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

429
```ts
Z
zengyawen 已提交
430 431 432
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
433
let result = plainArray.toString();
Z
zengyawen 已提交
434
```
L
linhaoran 已提交
435 436 437 438


### clear

Z
zengyawen 已提交
439
clear(): void
L
linhaoran 已提交
440

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

Z
zengyawen 已提交
443 444
**系统能力:** SystemCapability.Utils.Lang

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

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


### forEach

457
forEach(callbackfn: (value: T, index?: number, PlainArray?: PlainArray<T>) => void, thisArg?: Object): void
L
linhaoran 已提交
458 459 460

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

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

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

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

callbackfn的参数说明:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| value | T | 是 | 当前遍历到的元素键值对的值。 |
474
| index | number | 否 | 当前遍历到的元素键值对的键。 |
475
| PlainArray | PlainArray<T>| 否 | 当前调用forEach方法的实例对象。 |
Z
zengyawen 已提交
476 477 478

**示例:**

479
```ts
Z
zengyawen 已提交
480 481 482
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");
483 484
plainArray.forEach((value, index) => {
  console.log("value:" + value, index);
Z
zengyawen 已提交
485 486
});
```
L
linhaoran 已提交
487 488 489 490


### [Symbol.iterator]

Z
zengyawen 已提交
491 492 493 494
[Symbol.iterator]\(): IterableIterator<[number, T]>

返回一个迭代器,迭代器的每一项都是一个 JavaScript对象,并返回该对象。

Z
zengyawen 已提交
495 496
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
497 498 499 500
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
501
| IterableIterator<[number, T]> | 返回一个迭代器。 |
Z
zengyawen 已提交
502 503 504

**示例:**

505
```ts
Z
zengyawen 已提交
506 507 508 509 510 511
let plainArray = new PlainArray();
plainArray.add(1, "sddfhf");
plainArray.add(2, "sffdfhf");

// 使用方法一:
for (let item of plainArray) { 
512 513
  console.log("index:" + item[0]);
  console.log("value:" + item[1]);
Z
zengyawen 已提交
514 515 516 517 518 519
}

// 使用方法二:
let iter = plainArray[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {
520 521
  console.log("index:" + temp[0]);
  console.log("value:" + temp[1]);
Z
zengyawen 已提交
522 523 524
  temp = iter.next().value;
}
```