HarmonyOS 鸿蒙Next 定义一个Map
HarmonyOS 鸿蒙Next 定义一个Map
interface Map<K, V> {}
为什么实例化一个Map时,需要以方括号[],数组的形式定义,感觉这么鸡肋呢?
let p: Map<string, Object> = new Map([[“mobile”,“13444444444” ]]);
为什么不是以下这种定义方式:
let p: Map<string, Object> = new Map({“mobile”,“13444444444”});
相比它的写法鸡肋,经验讲他的使用更需要注意,set赋值只能get获取,[]赋值只能[]获取
1、当你使用new Map([[“mobile”,“13444444444” ]])初始化时,
只能通过get获取到值
2、当你把接口中的数据赋值给map时
只能通过[]获取到值
代码示例:
let jsonStr2 =
`
{
"mobile2":"哈哈哈"
}
`
let p: Map<string, Object> = new Map([["mobile","13444444444" ]]);
p['abc'] = "123"
p.set('aaa','111')
console.info(`p['mobile']:${p['mobile']}`)
console.info(`p.get('mobile'):${p.get('mobile')}`)
console.info(`p.get('abc'):${p.get('abc')}`)
console.info(`p.get('aaa'):${p.get('aaa')}`)
console.info(`p['abc']:${p['abc']}`)
p = JSON.parse(jsonStr2) as Map<string, Object>
console.info(`p:${p}`)
console.info(`p['mobile2']:${p['mobile2']}`)
try{
console.info(`p.get('mobile2'):${p.get('mobile2')}`)
}catch (e){
console.error(JSON.stringify(e))
}
打印
p['mobile']:undefined
p.get('mobile'):13444444444
p.get('abc'):undefined
p.get('aaa'):111
p['abc']:123
p:[object Object]
p['mobile2']:哈哈哈
{}
那么但是,当你把接口中的数据赋值给map时 let p: Map<string, Object> = new Map(); p[‘abc’] = “123” 赋值后的abc,似乎是无法移除的吧?
还有,为什么存在 let p: Map<string, Object> = new Map([[“mobile”,“13444444444” ]]); p[‘mobile’] = “13411111111” 两种赋值方式呢,我看了,这样的两种方式赋值,key还不会冲突,两组数组并存,同时存在,但是存在的形式还不一样。
存在两种赋值方式是因为javascript就这么设计的,页鸿蒙arkts依托于javascript,或者说是删除了一些javascript中的语法。
在javascript中,还是可以删除p['mobile']的,可以使用delete,但鸿蒙里不让使用delete关键字了。
下面的代码可以打开js在线编程测试
https://www.sojson.com/runjs.html
let p = new Map();
p['abc'] = "123"
console.log("1 abc:"+p['abc']);
delete p['abc']
console.log("2 abc:"+p['abc']);
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
打印
> "1 abc:123"
> "2 abc:undefined"
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
在HarmonyOS鸿蒙Next系统中,定义一个Map(映射)可以通过使用Java或JS等编程语言来实现。以下是基于Java语言的示例代码,展示如何在HarmonyOS应用中定义一个Map:
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
// 创建一个HashMap实例
Map<String, Integer> map = new HashMap<>();
// 向Map中添加键值对
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
// 从Map中获取值
Integer value = map.get("Two");
System.out.println("The value associated with 'Two' is: " + value);
// 遍历Map
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
}
}
在HarmonyOS开发中,确保你已经在项目中正确配置了所需的依赖和权限。如果你使用的是其他编程语言(如JS),Map的定义方式会有所不同,但基本思路是相似的。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html