• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 非线性容器PlainArray
2
3> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
4> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
5
6PlainArray可用于存储具有关联关系的key-value键值对集合,存储元素中key值唯一,key值类型为number类型,每个key对应一个value。
7
8PlainArray依据泛型定义,采用轻量级结构,集合中key值的查找依赖于二分查找算法,然后映射到其他数组中的value值。
9
10PlainArray和[LightWeightMap](js-apis-lightweightmap.md)都是用来存储键值对,且均采用轻量级结构,但PlainArray的key值类型只能为number类型。
11
12**推荐使用场景:** 当需要存储key值为number类型的键值对时,可以使用PlainArray。
13
14## 导入模块
15
16```ts
17import PlainArray from '@ohos.util.PlainArray';
18```
19
20
21
22## PlainArray
23
24### 属性
25
26**系统能力:** SystemCapability.Utils.Lang
27
28| 名称 | 参数类型 | 可读 | 可写 | 说明 |
29| -------- | -------- | -------- | -------- | -------- |
30| length | number | 是 | 否 | PlainArray的元素个数。 |
31
32
33### constructor
34
35constructor()
36
37PlainArray的构造函数。
38
39**系统能力:** SystemCapability.Utils.Lang
40
41**示例:**
42
43```ts
44let plainArray = new PlainArray();
45```
46
47
48### isEmpty
49
50isEmpty(): boolean
51
52判断该容器是否为空。
53
54**系统能力:** SystemCapability.Utils.Lang
55
56**返回值:**
57
58| 类型 | 说明 |
59| -------- | -------- |
60| boolean | 为空返回true, 不为空返回false。 |
61
62**示例:**
63
64```ts
65const plainArray = new PlainArray();
66let result = plainArray.isEmpty();
67```
68
69
70### has
71
72has(key: number): boolean
73
74判断此容器中是否含有该指定key。
75
76**系统能力:** SystemCapability.Utils.Lang
77
78**参数:**
79
80| 参数名 | 类型 | 必填 | 说明 |
81| -------- | -------- | -------- | -------- |
82| key | number | 是 | 指定key。 |
83
84**返回值:**
85
86| 类型 | 说明 |
87| -------- | -------- |
88| boolean | 包含指定key返回true,否则返回false。 |
89
90**示例:**
91
92```ts
93let plainArray = new PlainArray();
94plainArray.has(1);
95plainArray.add(1, "sddfhf");
96let result1 = plainArray.has(1);
97```
98
99
100### get
101
102get(key: number): T
103
104获取指定key所对应的value。
105
106**系统能力:** SystemCapability.Utils.Lang
107
108**参数:**
109
110| 参数名 | 类型 | 必填 | 说明 |
111| -------- | -------- | -------- | -------- |
112| key | number | 是 | 查找的指定key。 |
113
114**返回值:**
115
116| 类型 | 说明 |
117| -------- | -------- |
118| T | 返回key映射的value值。 |
119
120**示例:**
121
122```ts
123let plainArray = new PlainArray();
124plainArray.add(1, "sddfhf");
125plainArray.add(2, "sffdfhf");
126let result = plainArray.get(1);
127```
128
129
130### getIndexOfKey
131
132getIndexOfKey(key: number): number
133
134查找指定key第一次出现的下标值,如果没有找到该key返回-1。
135
136**系统能力:** SystemCapability.Utils.Lang
137
138**参数:**
139
140| 参数名 | 类型 | 必填 | 说明 |
141| -------- | -------- | -------- | -------- |
142| key | number | 是 | 指定key。 |
143
144**返回值:**
145
146| 类型 | 说明 |
147| -------- | -------- |
148| number | 返回指定key第一次出现时的下标值,查找失败返回-1。 |
149
150**示例:**
151
152```ts
153let plainArray = new PlainArray();
154plainArray.add(1, "sddfhf");
155plainArray.add(2, "sffdfhf");
156let result = plainArray.getIndexOfKey(2);
157```
158
159
160### getIndexOfValue
161
162getIndexOfValue(value: T): number
163
164查找指定value元素第一次出现的下标值,如果没有找到该value元素返回-1。
165
166**系统能力:** SystemCapability.Utils.Lang
167
168**参数:**
169
170| 参数名 | 类型 | 必填 | 说明 |
171| -------- | -------- | -------- | -------- |
172| value | T | 是 | 指定value元素。 |
173
174**返回值:**
175
176| 类型 | 说明 |
177| -------- | -------- |
178| number | 返回指定value元素第一次出现时的下标值,查找失败返回-1。 |
179
180**示例:**
181
182```ts
183let plainArray = new PlainArray();
184plainArray.add(1, "sddfhf");
185plainArray.add(2, "sffdfhf");
186let result = plainArray.getIndexOfValue("sddfhf");
187```
188
189
190### getKeyAt
191
192getKeyAt(index: number): number
193
194查找指定下标的元素键值对中key值。
195
196**系统能力:** SystemCapability.Utils.Lang
197
198**参数:**
199
200| 参数名 | 类型 | 必填 | 说明 |
201| -------- | -------- | -------- | -------- |
202| index | number | 是 | 指定下标。 |
203
204**返回值:**
205
206| 类型 | 说明 |
207| -------- | -------- |
208| number | 返回该下标对应的元素键值对中key值,失败返回-1。 |
209
210**示例:**
211
212```ts
213let plainArray = new PlainArray();
214plainArray.add(1, "sddfhf");
215plainArray.add(2, "sffdfhf");
216let result = plainArray.getKeyAt(1);
217```
218
219### getValueAt
220
221getValueAt(index: number): T
222
223查找指定下标元素键值对中Value值,否则返回undefined。
224
225**系统能力:** SystemCapability.Utils.Lang
226
227**参数:**
228
229  | 参数名 | 类型 | 必填 | 说明 |
230  | -------- | -------- | -------- | -------- |
231  | index | number | 是 | 指定下标。 |
232
233**返回值:**
234
235  | 类型 | 说明 |
236  | -------- | -------- |
237  | T | 返回该下标对应的元素键值对中key值,失败返回undefined。 |
238
239**示例:**
240
241  ```ts
242  let plainArray = new PlainArray();
243  plainArray.add(1, "sddfhf");
244  plainArray.add(2, "sffdfhf");
245  let result = plainArray.getKeyAt(1);
246  ```
247
248### clone
249
250clone(): PlainArray<T>
251
252克隆一个实例,并返回克隆后的实例。修改克隆后的实例并不会影响原实例。
253
254**系统能力:** SystemCapability.Utils.Lang
255
256**返回值:**
257
258| 类型 | 说明 |
259| -------- | -------- |
260| PlainArray<T> | 返回新的对象实例。 |
261
262**示例:**
263
264```ts
265let plainArray = new PlainArray();
266plainArray.add(1, "sddfhf");
267plainArray.add(2, "sffdfhf");
268let newPlainArray = plainArray.clone();
269```
270
271
272### add
273
274add(key: number, value: T): void
275
276向容器中添加一组数据。
277
278**系统能力:** SystemCapability.Utils.Lang
279
280**参数:**
281
282| 参数名 | 类型 | 必填 | 说明 |
283| -------- | -------- | -------- | -------- |
284| key | number | 是 | 添加成员数据的键名。 |
285| value | T | 是 | 添加成员数据的值。 |
286
287**示例:**
288
289```ts
290let plainArray = new PlainArray();
291plainArray.add(1, "sddfhf");
292```
293
294
295### remove
296
297remove(key: number): T
298
299删除指定key对应元素。
300
301**系统能力:** SystemCapability.Utils.Lang
302
303**参数:**
304
305| 参数名 | 类型 | 必填 | 说明 |
306| -------- | -------- | -------- | -------- |
307| key | number | 是 | 指定key。 |
308
309**返回值:**
310
311| 类型 | 说明 |
312| -------- | -------- |
313| T | 返回删除元素的值。 |
314
315**示例:**
316
317```ts
318let plainArray = new PlainArray();
319plainArray.add(1, "sddfhf");
320plainArray.add(2, "sffdfhf");
321plainArray.remove(2);
322let result = plainArray.remove(2);
323```
324
325
326### removeAt
327
328removeAt(index: number): T
329
330删除指定下标对应的元素。
331
332**系统能力:** SystemCapability.Utils.Lang
333
334**参数:**
335
336| 参数名 | 类型 | 必填 | 说明 |
337| -------- | -------- | -------- | -------- |
338| index | number | 是 | 指定元素下标。 |
339
340**返回值:**
341
342| 类型 | 说明 |
343| -------- | -------- |
344| T | 返回删除的元素。 |
345
346**示例:**
347
348```ts
349let plainArray = new PlainArray();
350plainArray.add(1, "sddfhf");
351plainArray.add(2, "sffdfhf");
352plainArray.removeAt(1);
353let result = plainArray.removeAt(1);
354```
355
356
357### removeRangeFrom
358
359removeRangeFrom(index: number, size: number): number
360
361删除一定范围内的元素。
362
363**系统能力:** SystemCapability.Utils.Lang
364
365**参数:**
366
367| 参数名 | 类型 | 必填 | 说明 |
368| -------- | -------- | -------- | -------- |
369| index | number | 是 | 删除元素的起始下标。 |
370| size | number | 是 | 期望删除元素个数。 |
371
372**返回值:**
373
374| 类型 | 说明 |
375| -------- | -------- |
376| number | 实际删除元素个数。 |
377
378**示例:**
379
380```ts
381let plainArray = new PlainArray();
382plainArray.add(1, "sddfhf");
383plainArray.add(2, "sffdfhf");
384let result = plainArray.removeRangeFrom(1, 3);
385```
386
387
388### setValueAt
389
390setValueAt(index: number, value: T): void
391
392替换容器中指定下标对应键值对中的键值。
393
394**系统能力:** SystemCapability.Utils.Lang
395
396**参数:**
397
398| 参数名 | 类型 | 必填 | 说明 |
399| -------- | -------- | -------- | -------- |
400| index | number | 是 | 指定替换数据下标。 |
401| value | T | 是 | 替换键值对中的值。 |
402
403**示例:**
404
405```ts
406let plainArray = new PlainArray();
407plainArray.add(1, "sddfhf");
408plainArray.add(2, "sffdfhf");
409plainArray.setValueAt(1, 3546);
410```
411
412
413### toString
414
415toString(): String
416
417获取包含容器中所有键和值的字符串。
418
419**系统能力:** SystemCapability.Utils.Lang
420
421**返回值:**
422
423| 类型 | 说明 |
424| -------- | -------- |
425| String | 返回对应字符串。 |
426
427**示例:**
428
429```ts
430let plainArray = new PlainArray();
431plainArray.add(1, "sddfhf");
432plainArray.add(2, "sffdfhf");
433let result = plainArray.toString();
434```
435
436
437### clear
438
439clear(): void
440
441清除容器中的所有元素,并把length置为0。
442
443**系统能力:** SystemCapability.Utils.Lang
444
445**示例:**
446
447```ts
448let plainArray = new PlainArray();
449plainArray.add(1, "sddfhf");
450plainArray.add(2, "sffdfhf");
451plainArray.clear();
452```
453
454
455### forEach
456
457forEach(callbackfn: (value: T, index?: number, PlainArray?: PlainArray<T>) => void, thisArg?: Object): void
458
459通过回调函数来遍历实例对象上的元素以及元素对应的下标。
460
461**系统能力:** SystemCapability.Utils.Lang
462
463**参数:**
464
465| 参数名 | 类型 | 必填 | 说明 |
466| -------- | -------- | -------- | -------- |
467| callbackfn | function | 是 | 回调函数。 |
468| thisArg | Object | 否 | callbackfn被调用时用作this值。 |
469
470callbackfn的参数说明:
471| 参数名 | 类型 | 必填 | 说明 |
472| -------- | -------- | -------- | -------- |
473| value | T | 是 | 当前遍历到的元素键值对的值。 |
474| index | number | 否 | 当前遍历到的元素键值对的键。 |
475| PlainArray | PlainArray<T>| 否 | 当前调用forEach方法的实例对象。 |
476
477**示例:**
478
479```ts
480let plainArray = new PlainArray();
481plainArray.add(1, "sddfhf");
482plainArray.add(2, "sffdfhf");
483plainArray.forEach((value, index) => {
484    console.log("value:" + value, "index:" + index);
485});
486```
487
488
489### [Symbol.iterator]
490
491[Symbol.iterator]\(): IterableIterator<[number, T]>
492
493返回一个迭代器,迭代器的每一项都是一个 JavaScript对象,并返回该对象。
494
495**系统能力:** SystemCapability.Utils.Lang
496
497**返回值:**
498
499| 类型 | 说明 |
500| -------- | -------- |
501| IterableIterator<[number, T]> | 返回一个迭代器。 |
502
503**示例:**
504
505```ts
506let plainArray = new PlainArray();
507plainArray.add(1, "sddfhf");
508plainArray.add(2, "sffdfhf");
509
510// 使用方法一:
511for (let item of plainArray) {
512  console.log("index:" + item[0]);
513  console.log("value:" + item[1]);
514}
515
516// 使用方法二:
517let iter = plainArray[Symbol.iterator]();
518let temp = iter.next().value;
519while(temp != undefined) {
520  console.log("index:" + temp[0]);
521  console.log("value:" + temp[1]);
522  temp = iter.next().value;
523}
524```