HarmonyOS鸿蒙Next中对象如何获取所有属性list,如何判断是否包含某个属性
HarmonyOS鸿蒙Next中对象如何获取所有属性list,如何判断是否包含某个属性
let product:WinProductModel = this.dataSourceList[i] as WinProductModel;
for (let j = 0; j < this.tbFuncBean.param?.length; j++) {
let paramItem:WinFuncBeanParamModel = this.tbFuncBean.param[j] as WinFuncBeanParamModel;
if (paramItem.gone != '1'){
let colName = paramItem.col as string;
if (colName && colName.length > 0){
let hasName = colName in product;
let hasName1 = product.hasOwnProperty(colName);
}
}
}
想判断product是否有某个属性,let hasName = colName in product; let hasName1 = product.hasOwnProperty(colName);
这两个方法在IDE中都报错,是否还有别的方法来判断啊,或者如何获取一个不固定属性的value,colName不是固定的,ios中可以使用valueForKey取值,鸿蒙有没有类似的方法
更多关于HarmonyOS鸿蒙Next中对象如何获取所有属性list,如何判断是否包含某个属性的实战教程也可以访问 https://www.itying.com/category-93-b0.html
-
在arkts中不允许使用
hasOwnProperty
这个接口,可以参考一下限制使用标准库,其对此有一些规范说明。 -
判断
Object
中是否含有某个属性,目前可以通过自己封装Object.keys
方法实现,参考使用objectkeys判断属性是否存在。
更多关于HarmonyOS鸿蒙Next中对象如何获取所有属性list,如何判断是否包含某个属性的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,获取对象所有属性列表可以使用Object.keys(obj)
方法,该方法返回对象自身可枚举属性组成的数组。判断是否包含某个属性可使用obj.hasOwnProperty(key)
方法或key in obj
操作符。前者只检查对象自身属性,后者会检查原型链。示例:
let obj = {a:1, b:2};
let keys = Object.keys(obj); // ['a','b']
let hasA = 'a' in obj; // true
在HarmonyOS Next中,可以使用以下方式获取对象属性和判断属性是否存在:
- 获取对象所有属性列表:
const propertyNames = Object.keys(product);
- 判断对象是否包含某个属性:
// 方法1:使用in操作符
const hasProperty = colName in product;
// 方法2:使用hasOwnProperty
const hasProperty = Object.prototype.hasOwnProperty.call(product, colName);
// 方法3:使用Reflect
const hasProperty = Reflect.has(product, colName);
- 动态获取属性值:
const value = product[colName];
// 或者
const value = Reflect.get(product, colName);
注意:在ArkTS中,类型检查比较严格,如果product是强类型对象,动态属性访问可能会被编译器警告。这种情况下可以考虑:
- 使用接口定义可选属性
- 使用类型断言
- 将对象转为any类型后再访问,