HarmonyOS鸿蒙Next ArkTS中如何判断某个key是否存在

HarmonyOS鸿蒙Next ArkTS中如何判断某个key是否存在

比如我有个 `record`

```javascript
let record = {
    name: 'John',
    age: 30
};
function hasKey(key) {
    return record.hasOwnProperty(key);
}

我想判断某个 key 是否存在,但是类似 inhasOwnProperty 这种方法在 .ets 文件中不能用?

如果用 object.keys(xxx).includes(abc),这种能用是不是耗性能呢?鸿蒙是怎么推荐的,有什么好的建议,或者文档放来让我学习一下,感谢!


更多关于HarmonyOS鸿蒙Next ArkTS中如何判断某个key是否存在的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

你好

在 ArkTS 中,Record 类型是一个类型定义工具,它本身并不具备 JavaScript 对象的实例方法(如 hasOwnPropertyin 操作符)。

在ArkTS中:

  1. 将类型断言为 Object:使用 Object.keys() 方法获取对象的所有属性名
  2. 使用 includes() 方法检查键是否存在

如何使用Record-方舟编程语言(ArkTS)-ArkTS语言-应用框架开发-开发 - 华为HarmonyOS开发者

更多关于HarmonyOS鸿蒙Next ArkTS中如何判断某个key是否存在的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next的ArkTS中,判断某个key是否存在可以使用Object.prototype.hasOwnProperty方法。例如,假设你有一个对象obj,你可以通过obj.hasOwnProperty('key')来判断key是否存在。如果返回true,则表示key存在;返回false则表示不存在。

在HarmonyOS Next的ArkTS中,判断对象key是否存在有以下几种推荐方式:

  1. 使用Object.prototype.hasOwnProperty.call()方法:
let record = {name: 'John', age: 30};
function hasKey(key: string) {
    return Object.prototype.hasOwnProperty.call(record, key);
}
  1. 使用ES6的Reflect API:
function hasKey(key: string) {
    return Reflect.has(record, key);
}
  1. 对于TypeScript类型安全的检查(编译时检查):
function hasKey(key: string): key is keyof typeof record {
    return key in record;
}

性能说明:

  • Object.keys().includes()确实会创建临时数组,性能相对较差
  • hasOwnPropertyReflect.has都是直接操作对象原型链,性能更好
  • 在ArkTS中推荐使用Reflect.hasObject.prototype.hasOwnProperty.call

这些方法在ArkTS中都是可用的,且符合ECMAScript标准。

回到顶部