HarmonyOS鸿蒙Next中ArkTS合并对象

HarmonyOS鸿蒙Next中ArkTS合并对象 ArkTS既不能使用展开运算符,也不能使用Object的API,如何合并对象

3 回复
function assign(target: Record<string, Object>, ...source: Object[]): Record<string, Object> {
    for (let s of source) {
        for (let k of Object.keys(s)) {
            target[k] = Reflect.get(s, k)
        }
    }
    return target
}
class D { b: number, c: number }
const target: Record<string, Object> = { "a": 1, "b": 2, }
const source: D = { b: 4, c: 5 }
const returnedTarget: Record<string, Object> = Object.assign(target, source)
console.log(target)

更多关于HarmonyOS鸿蒙Next中ArkTS合并对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,ArkTS提供了一种简洁的方式来合并对象。你可以使用Object.assign()方法或者扩展运算符(...)来实现对象的合并。

  1. 使用Object.assign()方法: Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,并返回目标对象。在ArkTS中,你可以这样使用:

    let obj1 = { a: 1, b: 2 };
    let obj2 = { b: 3, c: 4 };
    let mergedObj = Object.assign({}, obj1, obj2);
    // mergedObj 将会是 { a: 1, b: 3, c: 4 }
    

    在这个例子中,Object.assign()obj1obj2的属性合并到一个新的空对象中。如果有相同的属性,后面的对象属性会覆盖前面的。

  2. 使用扩展运算符(...): 扩展运算符(...)可以将一个对象的属性展开到另一个对象中。在ArkTS中,你可以这样使用:

    let obj1 = { a: 1, b: 2 };
    let obj2 = { b: 3, c: 4 };
    let mergedObj = { ...obj1, ...obj2 };
    // mergedObj 将会是 { a: 1, b: 3, c: 4 }
    

    在这个例子中,...obj1...obj2obj1obj2的属性展开并合并到一个新的对象中。如果有相同的属性,后面的对象属性会覆盖前面的。

这两种方法都可以实现对象的合并,你可以根据具体的需求选择使用哪一种。需要注意的是,这两种方法都是浅拷贝,如果对象中包含嵌套对象,嵌套对象不会被深拷贝。

在HarmonyOS鸿蒙Next中,ArkTS提供了多种方式来合并对象。最常见的方法是使用扩展运算符(...)或Object.assign()。以下是两种方式的示例:

  1. 使用扩展运算符
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const mergedObj = { ...obj1, ...obj2 }; // { a: 1, b: 3, c: 4 }
  1. 使用Object.assign()
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const mergedObj = Object.assign({}, obj1, obj2); // { a: 1, b: 3, c: 4 }

这两种方式都会将obj1obj2的属性合并到一个新对象中,如果属性名相同,后面的对象属性会覆盖前面的。

回到顶部