HarmonyOS 鸿蒙Next 如何合并两个对象

发布于 1周前 作者 gougou168 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何合并两个对象

想合并两个对象,使用es6的扩展运算符报错,请问如果简单高效完成两个对象的合并

2 回复

arkts 不支持 Object.assign,可以用 Object.entries 将对象转换为包含其键值对的数组,如下所示

let obj1: Object = JSON.parse('{ "Content-Type1": "application/json" }');

let empty:Record<string,Object> = {

}

let arr1:[string,Object][] = Object.entries(obj1)

for(let key of arr1) {

empty[key[0]] = key[1]

}

在HarmonyOS 鸿蒙Next beta1版本中,合并两个对象需要注意ArkTS对ES6的Object.assign()方法和展开运算符的限制。由于性能考虑,这些方法在ArkTS中不可直接使用。

针对此限制,可以采取以下替代方案:

  1. 自定义合并函数:通过遍历源对象的属性并赋值给目标对象来实现合并。例如,可以编写一个assign函数,该函数接受一个目标对象和一个或多个源对象,将源对象的属性复制到目标对象中。
  2. 使用第三方库:如果对象结构复杂,可以考虑使用如lodash的_.merge()等第三方库进行深度合并。

以下是一个简单的自定义合并函数示例:

function assign(target: Record<string, any>, ...sources: Record<string, any>[]): Record<string, any> {
  for (const source of sources) {
    for (const key in source) {
      if (source.hasOwnProperty(key)) {
        target[key] = source[key];
      }
    }
  }
  return target;
}

使用该函数合并对象时,只需传入目标对象和要合并的源对象即可。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部