OpenHarmony: 如何删除Record中的元素

2024-12-18 13:42:37
125次阅读
0个评论

一、引言

在OpenHarmony中,Record 类型提供了一种方便的方式来定义具有特定键值对结构的对象。然而,Record 本身没有直接修改其元素的内置方法,但是我们可以借助 Map 类型来实现对 Record 数据的增删改操作,然后再转换回 Record 类型。

二、MapRecord 类型转换函数

(一)Map 转为 Record

在 TypeScript 中,我们定义了 mapToRecord 函数来实现从 MapRecord 的转换。

// Map转为Record 
export function mapToRecord(myMap: Map<string, string>): Record<string, string> { 
  return Object.fromEntries(myMap.entries()) as Record<string, string>; 
} 

这个函数利用了 Object.fromEntries 方法,它接受一个可迭代对象(这里是 Mapentries 方法返回的迭代器),并将其转换为一个普通对象。然后通过类型断言将其转换为 Record<string, string> 类型。

(二)Record 转为 Map

相应地,recordToMap 函数用于将 Record 转换为 Map

// Record转为Map 
export function recordToMap(myRecord: Record<string, string>): Map<string, string> { 
  let myMap: Map<string, string> = new Map(); 
  for (const key in myRecord) { 
    myMap.set(key, myRecord[key]); 
  } 
  return myMap; 
}

该函数遍历 Record 对象的键,将每个键值对添加到新创建的 Map 中,最后返回这个 Map

三、在 ArkTS 中操作 Record 数据

在 ArkTS 项目中,首先导入上述定义的转换函数。

import { mapToRecord, recordToMap } from './utils'; 

接着定义一个初始的 Record 对象 res

let res: Record<string, string> = { 'item1': '1', 'item2': '2' }; 

然后将其转换为 Map 类型,以便进行增删操作。

let myMap: Map<string, string> = recordToMap(res); 
myMap.set('item3', '3'); // 添加元素 
myMap.delete('item1'); // 删除元素 

在添加元素时,使用 Mapset 方法添加一个新的键值对 'item3': '3';删除元素则通过 delete 方法删除键为 'item1' 的键值对。

最后,再将修改后的 Map 转换回 Record 类型。

let myRecord = mapToRecord(myMap); 

Index 组件的 build 函数中,当点击按钮时,将修改后的 Record 对象以 JSON 字符串的形式输出到控制台。

@Entry 
@Component 
struct Index { 
  build() { 
    Row() { 
      Column() { 
        Button('change Record') 
         .onClick(() => { 
            console.log('myRecord:', JSON.stringify(myRecord)); // myRecord: {"item2":"2","item3":"3"} 
          }) 
      } 
     .width('100%') 
    } 
   .height('100%') 
  } 
}
收藏00

登录 后评论。没有帐号? 注册 一个。