HarmonyOS鸿蒙Next中ArkTS如何遍历类对象属性值?

HarmonyOS鸿蒙Next中ArkTS如何遍历类对象属性值?

Object.keys 是获取属性名

Object.values 是获取属性值

有同时获取key 和 value的方法吗
4 回复
class MyObject {
  a: number = 0;
  b: number = 0;
  c: boolean = false;
  d: string = ''
}

let obj:MyObject = new MyObject();
obj.a = 1;
obj.b = 2;
obj.c = true;
obj.d = 'abc';
let entries:[string, object][] = Object.entries(obj);
entries.forEach((value: [key: string,value: object], index: number) => {
  console.log(value[0],value[1])
});

可以参考上面示例

更多关于HarmonyOS鸿蒙Next中ArkTS如何遍历类对象属性值?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


Object.entries(obj)可以吧

let map: Map<string, object> = new Map<string, object>(Object.entries(obj))

在HarmonyOS鸿蒙Next中,使用ArkTS遍历类对象属性值可以通过Reflect.ownKeysObject.getOwnPropertyDescriptors方法实现。首先,通过Reflect.ownKeys获取对象的所有属性键,然后使用Object.getOwnPropertyDescriptors获取每个属性的描述符。通过遍历这些键和描述符,可以访问每个属性的值。

例如:

class MyClass {
    prop1: string = "value1";
    prop2: number = 123;
}

const obj = new MyClass();
const keys = Reflect.ownKeys(obj);

keys.forEach(key => {
    const descriptor = Object.getOwnPropertyDescriptor(obj, key);
    if (descriptor && !descriptor.get) {
        console.log(`Key: ${String(key)}, Value: ${obj[key]}`);
    }
});

这段代码会输出MyClass实例的所有属性及其值。通过这种方式,可以在ArkTS中遍历类对象的属性值。

在HarmonyOS鸿蒙Next中,使用ArkTS遍历类对象属性值可以通过反射机制实现。首先,使用Object.keys()获取对象的所有属性名,然后通过for...of循环遍历这些属性名,并使用obj[key]获取每个属性的值。示例代码如下:

class MyClass {
    name: string = "John";
    age: number = 30;
}

let obj = new MyClass();
for (let key of Object.keys(obj)) {
    console.log(key + ": " + obj[key]);
}

这将输出对象的属性名和对应的值。

回到顶部