首页 > 其他分享 >鸿蒙应用示例:NEXT 中 Map 类型的使用及注意事项

鸿蒙应用示例:NEXT 中 Map 类型的使用及注意事项

时间:2024-10-03 13:20:44浏览次数:9  
标签:info Map set console 示例 NEXT 遍历 key

在JavaScript中,Map对象允许存储任何类型的键和值,提供了键值对的存储功能。在HarmonyOS中,Map的使用基本遵循JavaScript的标准,尤其是要注意set赋值只能用get获取,而索引赋值只能用索引获取。且它们可以同时赋值但遍历的方式又不同。

【Map 对象的赋值与获取】

  1. 使用set方法赋值 当你需要创建一个Map对象并为其设置初始值时,可以使用new Map()构造函数,并传入一个由键值对组成的数组。一旦通过set方法设置了值,那么必须使用get方法来检索这些值。
let p: Map<string, string> = new Map([["mobile", "13444444444"]]);
p.set('aaa', '111');
console.info(`p.get('mobile'):` + p.get('mobile'));
console.info(`p.get('aaa'):` + p.get('aaa'));
  1. 使用Object.entries转换为Map 如果你有一个对象,并希望将其转换为Map对象,可以利用Object.entries方法来实现这一点。此方法将对象的所有可枚举属性转换成键值对数组,然后可以用这些数组来初始化Map。
let strParam = '{"main":"aasadada","ks":"sadadas","sc":11111,"update":"asdasdasda"}';
let obj: object = JSON.parse(strParam);
let p2: Map<string, string | number> = new Map(Object.entries(obj));
console.info(`p2.get('main'): ${p2.get('main')}`);
  1. 使用索引赋值 当处理从接口API返回的数据时,可能需要将JSON字符串直接解析为Map。需要注意的是,虽然可以这样做,但是当尝试通过索引访问时,必须确保数据类型正确。
let jsonStr2 = `{"mobile2":"哈哈哈"}`;
let p3 = JSON.parse(jsonStr2) as Map<string, Object>;
console.info(`p3['mobile2']:${p3['mobile2']}`);

【Map 的遍历】 Map对象支持多种遍历方式,这取决于你是如何赋值的。

  1. 使用forEach遍历 对于通过set方法赋值的Map,推荐使用forEach来进行遍历。
p.forEach((value, key) => {
  console.info(`Key (set): ${key}, Value (set): ${value}`);
});
  1. 使用索引遍历 如果Map是通过索引赋值的,则应使用Object.keys结合forEach来遍历键值对。
Object.keys(targetMap).forEach((key) => {
  console.info(`Key (index): ${key}, Value (index): ${targetMap[key]}`);
});

【完整示例】

@Entry
@Component
struct Index {
  build() {
    Column() {
      Button('测试')
        .onClick(() => {
          let p1: Map<string, string> = new Map([["mobile", "13444444444"]]);
          p1.set('aaa', '111');
          console.info(`p1.get('mobile'):` + p1.get('mobile'));
          console.info(`p1.get('aaa'):` + p1.get('aaa'));

          let strParam = '{"main":"aasadada","ks":"sadadas","sc":11111,"update":"asdasdasda"}';
          let obj: object = JSON.parse(strParam);
          let p2: Map<string, string | number> = new Map(Object.entries(obj));
          console.info(`p2.get('main'): ${p2.get('main')}`);

          let jsonStr2 = `{"mobile2":"哈哈哈"}`
          let p3 = JSON.parse(jsonStr2) as Map<string, Object>
          console.info(`p3['mobile2']:${p3['mobile2']}`)

          console.info(`遍历p1 forEach`)
          p1.forEach((value, key) => {
            console.info(`Key (set): ${key}, Value (set): ${value}`);
          });

          console.info(`遍历p2 forEach`)
          p2.forEach((value, key) => {
            console.info(`Key (set): ${key}, Value (set): ${value}`);
          });

          console.info(`遍历p3 forEach`)
          try {
            p3.forEach((value, key) => {
              console.info(`Key (set): ${key}, Value (set): ${value}`);
            });
          } catch (e) {
            console.error(`e:${JSON.stringify(e)}`)
          }

          console.info(`遍历p1 Object.keys`)
          Object.keys(p1).forEach((key) => {
            console.info(`Key (index): ${key}, Value (index): ${p1[key]}`);
          });

          console.info(`遍历p2 Object.keys`)
          Object.keys(p2).forEach((key) => {
            console.info(`Key (index): ${key}, Value (index): ${p2[key]}`);
          });

          console.info(`遍历p3 Object.keys`)
          Object.keys(p3).forEach((key) => {
            console.info(`Key (index): ${key}, Value (index): ${p3[key]}`);
          });

        })
    }
    .height('100%')
    .width('100%')
  }
}

打印

p1.get('mobile'):13444444444
p1.get('aaa'):111
p2.get('main'): aasadada
p3['mobile2']:哈哈哈
遍历p1 forEach
Key (set): mobile, Value (set): 13444444444
Key (set): aaa, Value (set): 111
遍历p2 forEach
Key (set): main, Value (set): aasadada
Key (set): ks, Value (set): sadadas
Key (set): sc, Value (set): 11111
Key (set): update, Value (set): asdasdasda
遍历p3 forEach
e:{}
遍历p1 Object.keys
遍历p2 Object.keys
遍历p3 Object.keys
Key (index): mobile2, Value (index): 哈哈哈

注意事项

• 类型一致性:确保在使用Map时,键和值的类型保持一致。

• 遍历方式:根据赋值方式选择正确的遍历方法。

• 错误处理:在尝试遍历非Map类型时,应适当处理可能出现的异常。

标签:info,Map,set,console,示例,NEXT,遍历,key
From: https://blog.51cto.com/u_16508701/12167226

相关文章

  • 征程6 工具链常用工具和 API 整理(含新手示例)
    1.引言征程6工具链目前已经提供了比较丰富的集成化工具和接口来支持模型的移植和量化部署,本帖将整理常用的工具/接口以及使用示例来供大家参考,相信这篇文章会提升大家对征程6工具链的使用理解以及效率。干货满满,欢迎访问2.hb_config_generatorhb_config_generator是用于获......
  • 第二百六十节 JPA教程 - JPA查询命名参数示例
    JPA教程-JPA查询命名参数示例JPQL支持两种类型的参数绑定语法。第一种是位置绑定,其中参数在查询字符串中通过问号后面跟随参数号来指示。执行查询时,开发人员指定应替换的参数编号。SELECTeFROMEmployeeeWHEREe.department=?1ANDe.salary>?2命名参数......
  • 鸿蒙应用示例:键盘管理从避免遮挡到显示监听的方案实践
    在HarmonyOS应用开发中,键盘管理是一个关键环节,直接影响着用户体验。本文将探讨HarmonyOS键盘管理的几个重要方面,包括如何避免软键盘遮挡输入框、键盘显示与隐藏的监听机制,以及如何手动控制键盘的显示与隐藏。一、避免软键盘遮挡输入框在默认情况下,当用户在输入框中输入文本时,软键盘......
  • 64_索引管理_mapping root object深入剖析
    课程大纲1、rootobject就是某个type对应的mappingjson,包括了properties,metadata(_id,_source,_type),settings(analyzer),其他settings(比如include_in_all)PUT/my_index{"mappings":{"my_type":{"properties":{}}}}2、propertiestype,index,an......
  • 65_索引管理_定制化自己的dynamic mapping策略
    课程大纲1、定制dynamic策略true:遇到陌生字段,就进行dynamicmappingfalse:遇到陌生字段,就忽略strict:遇到陌生字段,就报错PUT/my_index{"mappings":{"my_type":{"dynamic":"strict","properties":{"title":{"type":&......
  • 38_初识搜索引擎_用一个例子告诉你mapping到底是什么
    插入几条数据,让es自动为我们建立一个索引PUT/website/article/1{"post_date":"2017-01-01","title":"myfirstarticle","content":"thisismyfirstarticleinthiswebsite","author_id":11400}PUT/w......
  • mybatis xml里的 resultMap、resultOrdered、resultSets、resultSetType、resultType
    在MyBatis中,映射结果集是一项重要的功能,用于将数据库查询结果映射到Java对象中。为了实现这一功能,MyBatis提供了多个配置选项,如resultMap、resultOrdered、resultSets、resultSetType和resultType。以下是这些配置选项的详细解释及示例:1.resultTyperesultType是最简单的结......
  • <<迷雾>> 第5章 从逻辑学到逻辑电路(4)--或门及其符号 示例电路
    info::操作说明鼠标单击开关切换开合状态系统中使用一个类似箭头的形状表示或门primary::在线交互操作链接https://cc.xiaogd.net/?startCircuitLink=https://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch05-13-or-gate.txt原图......
  • C++在游戏开发中的卓越性能:优势解析与代码示例
    在游戏开发领域,C++一直是一种备受青睐的编程语言。它以其高性能、灵活性和强大的功能集,成为了游戏开发者的首选语言之一。在本文中,我们将深入探讨C++在游戏开发中的优势,并提供一些代码示例来展示这些优势是如何在实际开发中发挥作用的。高性能与低级控制C++提供接近硬件......
  • Map put的过程
    1.是什么        在Java中,Map是一个接口,它存储键值对(key-valuepairs)。最常见的Map实现包括HashMap、TreeMap和LinkedHashMap等。尽管不同的Map实现可能在内部工作原理上有所不同,但它们都遵循相同的接口规范,包括put方法。下面是HashMap中put方法的一个详细解释,因为Ha......