HarmonyOS 深拷贝关于list类型如何处理?

目前ArkTS不支持any类型,没办法在ets中写深拷贝逻辑,但是在ts文件中写深拷贝时,list数据类型又不支持,如何处理

阅读 577
1 个回答

参考:

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;
}
let arr1:Array<number> = new Array<number>(1, 2, 3);
let arr2:Array<number> = deepCopy(arr1);
arr2[2] = 4;

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