HarmonyOS 鸿蒙Next:使用Object.keys循环对象获取value值,但pa[propName]一直报错,这是什么原因

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:使用Object.keys循环对象获取value值,但pa[propName]一直报错,这是什么原因

interface info {
name:string,
account:string
}

let pa:info = {
name:‘dwed’,
account:‘123456’
}
for(const propName of Object.keys(pa)){
const value:string = pa[propName]
}

9 回复
我的评价是有点大病,放着好好地for...in不用,还绕一圈用Object.keys拿,又拿不到非枚举对象...

for in 都不支持了

那for of就是支持的吗?而且那时候11还没对外发布,9的时候for in还是可以用的

现在API 12 可以使用Object()就不报错了。 interface info { name:string, account:string }

let pa:info = { name:‘dwed’, account:‘123456’ } for(const propName of Object.keys(pa)){ const value:string = Object(pa)[propName] }

BTW,报什么错,测了一下,两种方式都可行。

改代码为:

    for(const propName in pa){

      const value:string = pa[propName]

      console.log(`value:  ${value}`);

    }

对象 先转 JSON 再转 object  从 object 取

let pa_obj:object = json.parse(json.stringify(pa));

for (let str of object.keys(pa)) {

let value = pa_obj[str]

}

pa 是对象 又不是 map 不能这样取值

在HarmonyOS(鸿蒙)开发环境中,如果在使用Object.keys循环对象并尝试通过pa[propName]访问值时遇到错误,通常可能是以下几个原因:

  1. 对象pa未正确定义或初始化:确保pa在访问前已被正确赋值为一个对象。
  2. 属性名propName在对象中不存在:检查propName确实存在于pa对象中。
  3. 作用域问题:确保papropName在当前的作用域中是可访问的。
  4. 类型错误:如果pa不是对象或propName不是字符串,将导致错误。

请检查这些可能的原因,并相应地调整代码。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部