关于HarmonyOS 鸿蒙Next增加数组成员出现的问题。

关于HarmonyOS 鸿蒙Next增加数组成员出现的问题。

代码如下:

var dictZc=[]
var test={}
test['value']='交通'
test['icon']='pic/xm.png'
dictZc.push(test)
test['value']='日常'

dictZc.push(test)
test['value']='物业'
dictZc.push(test)
console.info(JSON.stringify(dictZc))

打印的日志为:

[
  {"value":"物业","icon":"pic/xm.png"},
  {"value":"物业","icon":"pic/xm.png"},
  {"value":"物业","icon":"pic/xm.png"}
]

而我希望的值为:

[
  {"value":"交通","icon":"pic/xm.png"},
  {"value":"日常","icon":"pic/xm.png"},
  {"value":"物业","icon":"pic/xm.png"}
]

请大楼指教。谢谢


更多关于关于HarmonyOS 鸿蒙Next增加数组成员出现的问题。的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复
@Entry
@Component
struct CheckboxExample {
  build() {
    Column() {
      Button('测试').onClick(() => {
        // 方案一:添加的每一个元素都是新的实例
        var dictZc = []
        var test = {}
        test['value'] = '交通'
        test['icon'] = 'pic.png'
        dictZc.push((JSON.parse(JSON.stringify(test))))
        test['value'] = '日常'

        dictZc.push((JSON.parse(JSON.stringify(test))))
        test['value'] = '物业'
        dictZc.push((JSON.parse(JSON.stringify(test))))
        console.info(JSON.stringify(dictZc))
        // 方案二:每一次添加被克隆的默认实例,然后再去修改的元素的属性
        // var dictZc = []
        // var test = {
        //   value: '交通',
        //   icon: 'pic.png'
        // }
        // dictZc.push(test)
        // dictZc.push(Object.assign({}, test))
        // dictZc[dictZc.length-1].value = '日常'
        // dictZc.push(Object.assign({}, test))
        // dictZc[dictZc.length-1].value = '物业'
        // console.info(JSON.stringify(dictZc, null, 2))
      })
    }
  }
}

更多关于关于HarmonyOS 鸿蒙Next增加数组成员出现的问题。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


高手,高手,谢谢!

你的test都是同一个对象,虽然添加有先有后,但实际上相等于你往数组里添加了三个相同的对象,所以,你应该每次重新创建对象,再往数组里添加。

能举个例子吗?我不想定义多个变量。

在HarmonyOS鸿蒙Next中,增加数组成员时可能会遇到一些问题。常见的问题包括数组越界、内存分配失败或数据类型不匹配。数组越界通常是由于在增加成员时未正确计算数组大小或索引超出当前数组范围。内存分配失败可能是由于系统内存不足或未正确释放之前的内存。数据类型不匹配则可能是由于在增加成员时未确保新成员的数据类型与数组定义一致。解决这些问题需要仔细检查数组操作的代码逻辑,确保在增加成员时正确管理内存和数据类型。

在HarmonyOS 鸿蒙Next中,增加数组成员时可能遇到的问题是数组越界或内存分配不足。确保在增加成员前检查数组容量,必要时使用动态数组或容器类(如ArrayList)来灵活管理数据。此外,注意线程安全,避免在多线程环境下操作数组时出现竞态条件。

回到顶部