HarmonyOS 鸿蒙Next中对象合并
HarmonyOS 鸿蒙Next中对象合并 1.自定义assign方法
function assign(target: Record<string, Object>, ...source: Object[]): Record<string, Object> {
for (const items of source) {
for (const key of Object.keys(items)) {
target[key] = Reflect.get(items, key)
}
}
return target;
}
2.使用assign方法
interface IMergeSub {
testString: string,
testObject?: IMergeSub,
testArray?: Array<number>
}
interface IMerge {
a: IMergeSub,
b: IMergeSub[],
c: string[],
d: number
}
export function testAssign() {
let objectOne: IMerge =
{
a: {
testString: 'objectOne-a-testString',
testObject: {
testString: 'objectOne-a-testObject-testString'
},
testArray: [1]
},
b: [{
testString: 'objectOne-b-testString',
testObject: {
testString: 'objectOne-b-testObject-testString'
},
testArray: [2]
}],
c: ['objectOne-c'],
d: 3
}
let objectTwo: Record<string, Object> = {
'a': 'objectTwo-a',
'c': ['objectTwo-c'],
'e': 1
}
let objectThree: Record<string, Object> = {
'f': ['objectThree-f']
}
// 合并多个对象,ObjectOne和ObjectTwo的属性都将附加到ObjectThree上,属性名相同时入参下标靠后的对象属性覆盖前面的对象属性
const multiObjectMerged = assign(objectThree, objectTwo, objectOne);
console.log('multiObjectMerged is:' + JSON.stringify(multiObjectMerged));
console.log('objectThree is:' + JSON.stringify(objectThree));
// 合并ObjectOne的属性到ObjectTwo,ObjectTwo的值会改变,属性名称相同时ObjectOne会覆盖ObjectTwo的属性
const objectMerged = assign(objectTwo, objectOne);
console.log('objectTwo is:' + JSON.stringify(objectTwo));
console.log('objectMerged is:' + JSON.stringify(objectMerged));
}
更多关于HarmonyOS 鸿蒙Next中对象合并的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
鸿蒙Next中对象合并使用Object.assign()方法实现。该方法将源对象的所有可枚举属性复制到目标对象,返回合并后的对象。若存在相同属性名,后续源对象的属性值会覆盖之前的。此方法适用于浅拷贝场景,不处理嵌套对象的深度合并。
更多关于HarmonyOS 鸿蒙Next中对象合并的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,对象合并可以通过自定义的assign方法实现,该方法支持浅拷贝合并多个对象。从代码示例来看,该方法使用Reflect.get获取属性值,并直接赋值给目标对象,因此对于嵌套对象或数组,不会进行深拷贝,而是引用复制。
需要注意,当源对象包含复杂类型(如嵌套对象或数组)时,修改合并后的对象可能会影响原始对象,因为属性是共享的。如果需要进行深拷贝合并,建议使用递归方式或第三方库(如lodash的merge方法)来处理嵌套结构。
此外,TypeScript接口定义有助于类型检查,但在运行时仍需注意属性覆盖逻辑,确保符合预期行为。