ArkTs如何实现对象的深拷贝? 以及对象的hashcode怎么取?

如题:ArkTs如何实现对象的深拷贝? 以及对象的hashcode怎么取?

阅读 1.6k
1 个回答

关于深拷贝可以参考:

@Entry
@Component
struct deepcopy {
  @State text: string = ""

  build() {
    Column({ space: 20 }) {
      Button('hello')
        .onClick(()=>{
          let a:ESObject= deepCopy([1,4,7])
          console.log('yeyouzhi>>>'+a.toString())
        })
    }
  }
}

function deepCopy(obj: ESObject): ESObject {
  if (typeof obj !== "object" || obj === null) {
    return obj;
  }
  let copy: ESObject;
  if (Array.isArray(obj)) {
    copy = [];
    for (let i = 0; i < obj.length; i++) {
      copy[i] = deepCopy(obj[i]);
    }
  } else {
    copy = {};
    for (let i = 0; i < obj.length(); i++) {
      let key:ESObject=obj[i];
      if (obj.hasOwnProperty(key)) {
        copy[key] = deepCopy(obj[key]);
      }
    }
  }
  return copy;
}

目前没有办法获取hashcode。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进