在HarmonyOS NEXT开发中深拷贝关于list类型如何处理?

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

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

阅读 616
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));

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

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